diff options
| author | lijinyang <[email protected]> | 2024-06-18 15:31:27 +0800 |
|---|---|---|
| committer | lijinyang <[email protected]> | 2024-06-18 15:31:27 +0800 |
| commit | f49e0ab5f0212f68c029750a53d79705142a9eca (patch) | |
| tree | 9cf7ad92dc88a3ff5b6a12d5042a86df0f1b65f3 | |
| parent | b43ab82dc45124eb78ca142394c17ac8ba807ff5 (diff) | |
| -rw-r--r-- | cn-admin/src/main/resources/db/R__AZ_report_category.sql | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/cn-admin/src/main/resources/db/R__AZ_report_category.sql b/cn-admin/src/main/resources/db/R__AZ_report_category.sql index 553b020..b2c81fb 100644 --- a/cn-admin/src/main/resources/db/R__AZ_report_category.sql +++ b/cn-admin/src/main/resources/db/R__AZ_report_category.sql @@ -20,20 +20,20 @@ CREATE TABLE `report_category` ( -- Records of report_category -- ---------------------------- -INSERT INTO `report_category` VALUES (1, 'IDC租用方报告', '<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<#setting number_format=\"0.####\"/>\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <title>IDC${Tenant}服务质量监测报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IDC${Tenant}服务质量监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 IDC${Tenant}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 客户端访问IDC${Tenant}(Z-A)的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceZATcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceZATcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceZATcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceZATcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceZATcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceZATcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceZATcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 IDC${Tenant}内容获取(A-Z)的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceAZTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceAZTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceAZTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceAZTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceAZTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceAZTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceAZTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas12\"></div>\r\n <div class=\"echarts__title\">图2 相关APP流量占比</div>\r\n </div>\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图3 相关域名流量占比</div>\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图4 应用层协议流量占比</div>\r\n </div>\r\n <div class=\"echarts\"></div>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceZASentTrafficBytesTop10??>\r\n <#list provinceZASentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceZASentTrafficBytesTop10??>\r\n <#list provinceZASentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceZASentTrafficBytesTop10??>\r\n <#list provinceZASentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 IDC${Tenant}对外(省Z-A)服务能力的TOP10省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceZAReceivedTrafficBytesTop10??>\r\n <#list provinceZAReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceZAReceivedTrafficBytesTop10??>\r\n <#list provinceZAReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceZAReceivedTrafficBytesTop10??>\r\n <#list provinceZAReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 IDC${Tenant}对外(省Z-A)服务能力的TOP10省份响应流量分布</div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if Top3ProvinceAppTrafficBytesTotal??>\r\n <#list Top3ProvinceAppTrafficBytesTotal as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas21\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas22\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas23\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange1\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange7\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange7\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图7 IDC${Tenant}对外(省Z-A)提供服务TOP3省份的APP的流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if topAppCompanyProvinceTrafficBytesTotal??>\r\n <#list topAppCompanyProvinceTrafficBytesTotal as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas24\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas25\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas26\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange2\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange8\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange8\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图8 IDC${Tenant}对外(省 Z-A)提供服务TOP3 APP的各省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if regionZASentTrafficBytesTop10??>\r\n <#list provinceAZSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceAZSentTrafficBytesTop10??>\r\n <#list provinceAZSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceAZSentTrafficBytesTop10??>\r\n <#list provinceAZSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 IDC${Tenant}内容获取(省A-Z)服务能力的TOP10省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceAZReceivedTrafficBytesTop10??>\r\n <#list provinceAZReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceAZReceivedTrafficBytesTop10??>\r\n <#list provinceAZReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceAZReceivedTrafficBytesTop10??>\r\n <#list provinceAZReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 IDC${Tenant}内容获取(省A-Z)服务能力的TOP10省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionZASentTrafficBytesTop10??>\r\n <#list regionZASentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionZASentTrafficBytesTop10??>\r\n <#list regionZASentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionZASentTrafficBytesTop10??>\r\n <#list regionZASentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 IDC${Tenant}对内(地市Z-A)服务能力的TOP10省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionZAReceivedTrafficBytesTop10??>\r\n <#list regionZAReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionZAReceivedTrafficBytesTop10??>\r\n <#list regionZAReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionZAReceivedTrafficBytesTop10??>\r\n <#list regionZAReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 IDC${Tenant}对内(地市Z-A)服务能力的TOP10省内地区响应流量分布</div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if top3RegionAppTrafficBytesTotal??>\r\n <#list top3RegionAppTrafficBytesTotal as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas27\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas28\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas29\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange3\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange13\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange13\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图13 IDC${Tenant}对内(地市Z-A)服务能力的TOP3省内地区主要app流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if top3AppCompanyRegionTrafficBytesTotal??>\r\n <#list top3AppCompanyRegionTrafficBytesTotal as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas30\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas31\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas32\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange4\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange14\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange14\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图14 IDC${Tenant}对内(地市Z-A)服务能力的TOP3 APP的省内地区流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionAZSentTrafficBytesTop10??>\r\n <#list regionAZSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionAZSentTrafficBytesTop10??>\r\n <#list regionAZSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionAZSentTrafficBytesTop10??>\r\n <#list regionAZSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图15 IDC内容获取(地市A-Z)服务能力的TOP10省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionAZReceivedTrafficBytesTop10??>\r\n <#list regionAZReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionAZReceivedTrafficBytesTop10??>\r\n <#list regionAZReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionAZReceivedTrafficBytesTop10??>\r\n <#list regionAZReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图16 IDC内容获取(地市A-Z)服务能力的TOP10省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header2\">四.内容收敛比</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts echarts__bar-value\">\r\n <div class=\"echarts__canvas\" id=\"canvas19\"></div>\r\n <div class=\"echarts__title\">图17 租用方流量分布</div>\r\n </span>\r\n <span class=\"echarts echarts__bar-value\">\r\n <div class=\"echarts__canvas\" id=\"canvas20\"></div>\r\n <div class=\"echarts__title\">图18 租用方会话分布</div>\r\n </span>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas14\"></div>\r\n </div>\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas16\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas6\"></div>\r\n </div>\r\n <div class=\"echarts\"></div>\r\n</div>\r\n<div class=\"echarts__title echarts__line-and-bar-title\">图19 内容获取流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas15\"></div>\r\n </div>\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas17\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas7\"></div>\r\n </div>\r\n <div class=\"echarts\"></div>\r\n</div>\r\n<div class=\"echarts__title echarts__line-and-bar-title\">图20 内容获取会话分布</div>\r\n<script>\r\n /** 数据 begin */\r\n var timeZoneOffset = ${timeZoneOffset}\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var totalTraffic = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n // IDCxxx服务总流量 (xxxService traffic total)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前一周期(Pre 1st xxxService traffic total)\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期(Pre 2st xxxService traffic total)\r\n var pre2stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 客户端访问IDCxxx(Z-A)服务流量\r\n var xxxServiceZATrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceZATrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceZATrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceZATrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceZATrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceZATrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceZATrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceZATrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2stxxxServiceZATrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2stxxxServiceZATrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2stxxxServiceZATrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2stxxxServiceZATrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // IDCxxx对内(地市Z-A)服务省内地区流量(xxxService ZA region traffic total)\r\n var xxxServiceZARegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceZARegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceZARegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceZARegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceZARegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceZARegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceZARegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceZARegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2stxxxServiceZARegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2stxxxServiceZARegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2stxxxServiceZARegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2stxxxServiceZARegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // IDCxxx内容获取(A-Z)流量(xxxService AZ traffic total)\r\n var xxxServiceAZTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceAZTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceAZTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceAZTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceAZTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceAZTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceAZTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceAZTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2stxxxServiceAZTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2stxxxServiceAZTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2stxxxServiceAZTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2stxxxServiceAZTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // IDC内容获取(地市A-Z)服务能力省内地区流量(xxxService AZ region traffic total)\r\n var xxxServiceAZRegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceAZRegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceAZRegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceAZRegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceAZRegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceAZRegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceAZRegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceAZRegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2stxxxServiceAZRegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2stxxxServiceAZRegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2stxxxServiceAZRegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2stxxxServiceAZRegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // IDCxxx服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // xxx服务当日流量变化曲线(xxxService traffic changing curve)\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000}, rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 2 业务分部 */\r\n // 相关APP流量占比(TOP 10 Related App bytes)\r\n var top10RelatedAppBytes = [\r\n <#if top10RelatedAppBytes??>\r\n <#list top10RelatedAppBytes as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // IDCxxx对外(省Z-A)服务能力TOP10请求流量分布(Province ZA Sent Traffic Bytes Top 10)\r\n var provinceZASentTrafficBytesTop10 = [\r\n <#if provinceZASentTrafficBytesTop10??>\r\n <#list provinceZASentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stProvinceZASentTrafficBytesTop10 = [\r\n <#if pre1stProvinceZASentTrafficBytesTop10??>\r\n <#list pre1stProvinceZASentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stProvinceZASentTrafficBytesTop10 = [\r\n <#if pre2stProvinceZASentTrafficBytesTop10??>\r\n <#list pre2stProvinceZASentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // IDCxxx对外(省Z-A)服务能力TOP10响应流量分布(Province ZA Received Traffic Bytes Top 10)\r\n var provinceZAReceivedTrafficBytesTop10 = [\r\n <#if provinceZAReceivedTrafficBytesTop10??>\r\n <#list provinceZAReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stProvinceZAReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceZAReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceZAReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stProvinceZAReceivedTrafficBytesTop10 = [\r\n <#if pre2stProvinceZAReceivedTrafficBytesTop10??>\r\n <#list pre2stProvinceZAReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // TOP3省份 IDCxxx对外(省Z-A)提供服务主要APP的流量\r\n var Top3ProvinceAppTrafficBytesTotal = [\r\n <#if Top3ProvinceAppTrafficBytesTotal??>\r\n <#list Top3ProvinceAppTrafficBytesTotal as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stTop3ProvinceAppTrafficBytesTotal = [\r\n <#if pre1stTop3ProvinceAppTrafficBytesTotal??>\r\n <#list pre1stTop3ProvinceAppTrafficBytesTotal as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndTop3ProvinceAppTrafficBytesTotal = [\r\n <#if pre2ndTop3ProvinceAppTrafficBytesTotal??>\r\n <#list pre2ndTop3ProvinceAppTrafficBytesTotal as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // num1(1st Province App Traffic Bytes)\r\n var provinceTrafficAppBytes1st = [\r\n <#if provinceTrafficAppBytes1st??>\r\n <#list provinceTrafficAppBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preProvinceAppTrafficBytes1st = [\r\n <#if preProvinceAppTrafficBytes1st??>\r\n <#list preProvinceAppTrafficBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndProvinceAppTrafficBytes1st = [\r\n <#if pre2ndProvinceAppTrafficBytes1st??>\r\n <#list pre2ndProvinceAppTrafficBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num2(Province Traffic App Bytes 2nd)\r\n var provinceTrafficAppBytes2nd = [\r\n <#if provinceTrafficAppBytes2nd??>\r\n <#list provinceTrafficAppBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preProvinceTrafficAppBytes2nd = [\r\n <#if preProvinceTrafficAppBytes2nd??>\r\n <#list preProvinceTrafficAppBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndProvinceTrafficAppBytes2nd = [\r\n <#if pre2ndProvinceTrafficAppBytes2nd??>\r\n <#list pre2ndProvinceTrafficAppBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num3(Province Traffic Bytes Total 3rd)\r\n var provinceTrafficBytesTotal3rd = [\r\n <#if provinceTrafficBytesTotal3rd??>\r\n <#list provinceTrafficBytesTotal3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preProvinceTrafficBytesTotal3rd = [\r\n <#if preProvinceTrafficBytesTotal3rd??>\r\n <#list preProvinceTrafficBytesTotal3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndProvinceTrafficBytesTotal3rd = [\r\n <#if pre2ndProvinceTrafficBytesTotal3rd??>\r\n <#list pre2ndProvinceTrafficBytesTotal3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // IDCxxx对外(省Z-A)提供服务的TOP 3 APP 各省份流量\r\n var topAppCompanyProvinceTrafficBytesTotal = [\r\n <#if topAppCompanyProvinceTrafficBytesTotal??>\r\n <#list topAppCompanyProvinceTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stTopAppCompanyProvinceTrafficBytesTotal = [\r\n <#if pre1stTopAppCompanyProvinceTrafficBytesTotal??>\r\n <#list pre1stTopAppCompanyProvinceTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndTopAppCompanyProvinceTrafficBytesTotal = [\r\n <#if pre2ndTopAppCompanyProvinceTrafficBytesTotal??>\r\n <#list pre2ndTopAppCompanyProvinceTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num1(AppCompany Province Traffic Bytes 1st)\r\n var appCompanyProvinceTrafficBytes1st = [\r\n <#if appCompanyProvinceTrafficBytes1st??>\r\n <#list appCompanyProvinceTrafficBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyProvinceTrafficBytes1st = [\r\n <#if preAppCompanyProvinceTrafficBytes1st??>\r\n <#list preAppCompanyProvinceTrafficBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyProvinceTrafficBytes1st = [\r\n <#if pre2ndAppCompanyProvinceTrafficBytes1st??>\r\n <#list pre2ndAppCompanyProvinceTrafficBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num2(AppCompany Province Traffic Bytes 2nd)\r\n var appCompanyProvinceTrafficBytes2nd = [\r\n <#if appCompanyProvinceTrafficBytes2nd??>\r\n <#list appCompanyProvinceTrafficBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyProvinceTrafficBytes2nd = [\r\n <#if preAppCompanyProvinceTrafficBytes2nd??>\r\n <#list preAppCompanyProvinceTrafficBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyProvinceTrafficBytes2nd = [\r\n <#if pre2ndAppCompanyProvinceTrafficBytes2nd??>\r\n <#list pre2ndAppCompanyProvinceTrafficBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num3(AppCompany Province Traffic Bytes 3rd)\r\n var appCompanyProvinceTrafficBytes3rd = [\r\n <#if appCompanyProvinceTrafficBytes3rd??>\r\n <#list appCompanyProvinceTrafficBytes3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyProvinceTrafficBytes3rd = [\r\n <#if preAppCompanyProvinceTrafficBytes3rd??>\r\n <#list preAppCompanyProvinceTrafficBytes3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyProvinceTrafficBytes3rd = [\r\n <#if pre2ndAppCompanyProvinceTrafficBytes3rd??>\r\n <#list pre2ndAppCompanyProvinceTrafficBytes3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // IDCxxx内容获取(省A-Z)服务能力 TOP 10 请求流量分布(Province AZ Sent Traffic Bytes Top 10)\r\n var provinceAZSentTrafficBytesTop10 = [\r\n <#if provinceAZSentTrafficBytesTop10??>\r\n <#list provinceAZSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stProvinceAZSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceAZSentTrafficBytesTop10??>\r\n <#list pre1stProvinceAZSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stProvinceAZSentTrafficBytesTop10 = [\r\n <#if pre2stProvinceAZSentTrafficBytesTop10??>\r\n <#list pre2stProvinceAZSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // IDCxxx内容获取(省A-Z)服务能力 TOP 10 响应流量分布(Province AZ Received Traffic Bytes Top 10)\r\n var provinceAZReceivedTrafficBytesTop10 = [\r\n <#if provinceAZReceivedTrafficBytesTop10??>\r\n <#list provinceAZReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stProvinceAZReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceAZReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceAZReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stProvinceAZReceivedTrafficBytesTop10 = [\r\n <#if pre2stProvinceAZReceivedTrafficBytesTop10??>\r\n <#list pre2stProvinceAZReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // IDCxxx对内(地市Z-A)服务能力 TOP 10 省内地区请求流量分布(Region ZA Sent Traffic Bytes Top 10)\r\n var regionZASentTrafficBytesTop10 = [\r\n <#if regionZASentTrafficBytesTop10??>\r\n <#list regionZASentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stRegionZASentTrafficBytesTop10 = [\r\n <#if pre1stRegionZASentTrafficBytesTop10??>\r\n <#list pre1stRegionZASentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stRegionZASentTrafficBytesTop10 = [\r\n <#if pre2stRegionZASentTrafficBytesTop10??>\r\n <#list pre2stRegionZASentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // IDCxxx对内(地市Z-A)服务能力 TOP 10 省内地区响应流量分布(Region ZA Received Traffic Bytes Top 10)\r\n var regionZAReceivedTrafficBytesTop10 = [\r\n <#if regionZAReceivedTrafficBytesTop10??>\r\n <#list regionZAReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stRegionZAReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionZAReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionZAReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stRegionZAReceivedTrafficBytesTop10 = [\r\n <#if pre2stRegionZAReceivedTrafficBytesTop10??>\r\n <#list pre2stRegionZAReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // TOP3省内地区 IDCxxx对内(地市Z-A)服务能力主要APP的流量\r\n var top3RegionAppTrafficBytesTotal = [\r\n <#if top3RegionAppTrafficBytesTotal??>\r\n <#list top3RegionAppTrafficBytesTotal as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stTop3RegionAppTrafficBytesTotal = [\r\n <#if pre1stTop3RegionAppTrafficBytesTotal??>\r\n <#list pre1stTop3RegionAppTrafficBytesTotal as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndTop3RegionAppTrafficBytesTotal = [\r\n <#if pre2ndTop3RegionAppTrafficBytesTotal??>\r\n <#list pre2ndTop3RegionAppTrafficBytesTotal as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num1(Region App Traffic Bytes 1st)\r\n var regionAppTrafficBytes1st = [\r\n <#if regionAppTrafficBytes1st??>\r\n <#list regionAppTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preRegionAppTrafficBytes1st = [\r\n <#if preRegionAppTrafficBytes1st??>\r\n <#list preRegionAppTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndRegionAppTrafficBytes1st = [\r\n <#if pre2ndRegionAppTrafficBytes1st??>\r\n <#list pre2ndRegionAppTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num2(Region App Traffic Bytes 2nd)\r\n var regionAppTrafficBytes2nd = [\r\n <#if regionAppTrafficBytes2nd??>\r\n <#list regionAppTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preRegionAppTrafficBytes2nd = [\r\n <#if preRegionAppTrafficBytes2nd??>\r\n <#list preRegionAppTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndRegionAppTrafficBytes2nd = [\r\n <#if pre2ndRegionAppTrafficBytes2nd??>\r\n <#list pre2ndRegionAppTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num3(Region App Traffic Bytes 3rd)\r\n var regionAppTrafficBytes3rd = [\r\n <#if regionAppTrafficBytes3rd??>\r\n <#list regionAppTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preRegionAppTrafficBytes3rd = [\r\n <#if preRegionAppTrafficBytes3rd??>\r\n <#list preRegionAppTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndRegionAppTrafficBytes3rd = [\r\n <#if pre2ndRegionAppTrafficBytes3rd??>\r\n <#list pre2ndRegionAppTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // IDCxxx对内(地市Z-A)服务能力的TOP 3 APP 各省内地区流量\r\n var top3AppCompanyRegionTrafficBytesTotal = [\r\n <#if top3AppCompanyRegionTrafficBytesTotal??>\r\n <#list top3AppCompanyRegionTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stTop3AppCompanyRegionTraffic = [\r\n <#if pre1stTop3AppCompanyRegionTrafficBytesTotal??>\r\n <#list pre1stTop3AppCompanyRegionTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndTop3AppCompanyRegionTrafficBytesTotal = [\r\n <#if pre2ndTop3AppCompanyRegionTrafficBytesTotal??>\r\n <#list pre2ndTop3AppCompanyRegionTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num1( AppCompany Region Traffic Bytes 1st)\r\n var appCompanyRegionTrafficBytes1st = [\r\n <#if appCompanyRegionTrafficBytes1st??>\r\n <#list appCompanyRegionTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyRegionTrafficBytes1st = [\r\n <#if preAppCompanyRegionTrafficBytes1st??>\r\n <#list preAppCompanyRegionTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyRegionTrafficBytes1st = [\r\n <#if pre2ndAppCompanyRegionTrafficBytes1st??>\r\n <#list pre2ndAppCompanyRegionTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num2(AppCompany Province Traffic Bytes 2nd)\r\n var appCompanyRegionTrafficBytes2nd = [\r\n <#if appCompanyRegionTrafficBytes2nd??>\r\n <#list appCompanyRegionTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyRegionTrafficBytes2nd = [\r\n <#if preAppCompanyRegionTrafficBytes2nd??>\r\n <#list preAppCompanyRegionTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyRegionTrafficBytes2nd = [\r\n <#if pre2ndAppCompanyRegionTrafficBytes2nd??>\r\n <#list pre2ndAppCompanyRegionTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num3(AppCompany Province Traffic Bytes 3rd)\r\n var appCompanyRegionTrafficBytes3rd = [\r\n <#if appCompanyRegionTrafficBytes3rd??>\r\n <#list appCompanyRegionTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyRegionTrafficBytes3rd = [\r\n <#if preAppCompanyRegionTrafficBytes3rd??>\r\n <#list preAppCompanyRegionTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyRegionTrafficBytes3rd = [\r\n <#if pre2ndAppCompanyRegionTrafficBytes3rd??>\r\n <#list pre2ndAppCompanyRegionTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(IDC内容获取(地市A-Z)服务能力)\r\n var regionAZSentTrafficBytesTop10 = [\r\n <#if regionAZSentTrafficBytesTop10??>\r\n <#list regionAZSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stRegionAZSentTrafficBytesTop10 = [\r\n <#if pre1stRegionAZSentTrafficBytesTop10??>\r\n <#list pre1stRegionAZSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stRegionAZSentTrafficBytesTop10 = [\r\n <#if pre2stRegionAZSentTrafficBytesTop10??>\r\n <#list pre2stRegionAZSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // IDC内容获取(地市A-Z)服务能力 TOP 10 省内地区响应流量分布(Region AZ\r\n var regionAZReceivedTrafficBytesTop10 = [\r\n <#if regionAZReceivedTrafficBytesTop10??>\r\n <#list regionAZReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stRegionAZReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionAZReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionAZReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stRegionAZReceivedTrafficBytesTop10 = [\r\n <#if pre2stRegionAZReceivedTrafficBytesTop10??>\r\n <#list pre2stRegionAZReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 4.1 IDC xxx 命中流量 */\r\n // 总流量\r\n var xxxServiceTrafficBytes = [\r\n <#if xxxServiceTrafficBytes??>\r\n <#list xxxServiceTrafficBytes as d>\r\n {received_bytes:${jsGetNumFromObj(d,\'received_bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 未命中缓存流量\r\n var xxxServiceMissCacheBytes = [\r\n <#if xxxServiceMissCacheBytes??>\r\n <#list xxxServiceMissCacheBytes as d>\r\n {received_bytes:${jsGetNumFromObj(d,\'received_bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.2 IDCxxx缓存命中会话 */\r\n var xxxServiceTotalSessions = [\r\n <#if xxxServiceTotalSessions??>\r\n <#list xxxServiceTotalSessions as d>\r\n {sessions:${jsGetNumFromObj(d,\'sessions\')}},\r\n </#list>\r\n </#if>\r\n ]\r\n var xxxServiceMissCacheSessions = [\r\n <#if xxxServiceMissCacheSessions??>\r\n <#list xxxServiceMissCacheSessions as d>\r\n {sessions:${jsGetNumFromObj(d,\'sessions\')}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.3 IDCxxx缓存未命中APP流量 */\r\n var top10AppMissCacheBytes = [\r\n <#if top10AppMissCacheBytes??>\r\n <#list top10AppMissCacheBytes as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",received_bytes:${jsGetNumFromObj(d,\'received_bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.4 IDCxxx缓存未命中DOMAIN流量 */\r\n var top10DomainMissCacheBytes = [\r\n <#if top10DomainMissCacheBytes??>\r\n <#list top10DomainMissCacheBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",received_bytes:${jsGetNumFromObj(d,\'received_bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.5 IDCxxx缓存未命中的应用层协议流量占比 */\r\n var top10ProtocolMissCacheBytes = [\r\n <#if top10ProtocolMissCacheBytes??>\r\n <#list top10ProtocolMissCacheBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",received_bytes:${jsGetNumFromObj(d,\'received_bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.6 IDCxxx缓存未命中APP会话 */\r\n var top10AppMissCacheSessions = [\r\n <#if top10AppMissCacheSessions??>\r\n <#list top10AppMissCacheSessions as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",sessions:${jsGetNumFromObj(d,\'sessions\')}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.7 IDCxxx缓存未命中DOMAIN会话 */\r\n var top10DomainMissCacheSessions = [\r\n <#if top10DomainMissCacheSessions??>\r\n <#list top10DomainMissCacheSessions as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",sessions:${jsGetNumFromObj(d,\'sessions\')}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.8 IDCxxx缓存未命中的应用层协议会话占比 */\r\n var top10ProtocolMissCacheSessions = [\r\n <#if top10ProtocolMissCacheSessions??>\r\n <#list top10ProtocolMissCacheSessions as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",sessions:${jsGetNumFromObj(d,\'sessions\')}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n\r\n ${reportJsCommon}\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\'currentRange0\', \'currentRange7\', \'currentRange8\', \'currentRange13\', \'currentRange14\']\r\n var prevRanges = [\'prevRange0\', \'prevRange7\', \'prevRange8\', \'prevRange13\', \'prevRange14\']\r\n var statisticsRanges = [\r\n \'statisticsRange1\',\r\n \'statisticsRange2\',\r\n \'statisticsRange3\',\r\n \'statisticsRange4\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && (xxxServiceRate.rate90 && xxxServiceRate.rate50 && xxxServiceRate.rate99) !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // 域外访问域内服务的Top 10省份流量分布折线图\r\n function initEcharts2 () {\r\n var categoryData2 = provinceZASentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData2 = provinceZASentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceZATrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceZATrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceZASentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceZASentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2stProvinceZASentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域外访问域内服务的Top 10省份流量分布折线图\r\n function initEcharts8 () {\r\n var categoryData8 = provinceZAReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData8 = provinceZAReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceZATrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceZATrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceZAReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceZAReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2stProvinceZAReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域内访问域外服务的Top 10省份流量分布折线图\r\n function initEcharts3 () {\r\n var categoryData3 = provinceAZSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData3 = provinceAZSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceAZTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceAZTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceAZSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceAZSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2stProvinceAZSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域内访问域外服务的Top 10省份流量分布折线图\r\n function initEcharts9 () {\r\n var categoryData9 = provinceAZReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData9 = provinceAZReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceAZTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceAZTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceAZReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceAZReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2stProvinceAZReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域外访问域内服务的Top 10省内地区流量分布折线图\r\n function initEcharts4 () {\r\n var categoryData4 = regionZASentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData4 = regionZASentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceZARegionTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceZARegionTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionZASentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionZASentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2stRegionZASentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域外访问域内服务的Top 10省内地区流量分布折线图\r\n function initEcharts10 () {\r\n var categoryData10 = regionZAReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData10 = regionZAReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceZATrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceZARegionTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionZAReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionZAReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2stRegionZAReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域内访问域外服务的TOP 10省内地区流量分布折线图\r\n function initEcharts5 () {\r\n var categoryData5 = regionAZSentTrafficBytesTop10.map(t => t.server_admin_area)\r\n var barSeriesData5 = regionAZSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceAZRegionTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceAZRegionTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionAZSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionAZSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2stRegionAZSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域内访问域外服务的TOP 10省内地区流量分布折线图\r\n function initEcharts11 () {\r\n var categoryData11 = regionAZReceivedTrafficBytesTop10.map(t => t.server_admin_area)\r\n var barSeriesData11 = regionAZReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceAZRegionTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceAZRegionTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionAZReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionAZReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2stRegionAZReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n function initEcharts6 () {\r\n var total6 = top10ProtocolMissCacheBytes.find(b => b.l7_protocol === \'total\')\r\n if (total6) {\r\n var pieDomainData6 = []\r\n var missedCache6 = top10ProtocolMissCacheBytes.filter(t => t.l7_protocol !== \'total\')\r\n var sessionsAll = 0\r\n pieDomainData6 = missedCache6.map(t => {\r\n sessionsAll += t.received_bytes\r\n return {\r\n value: t.received_bytes === 0 ? 0 : t.received_bytes / total6.received_bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData6.push({ name: \'other\', value: (total6.received_bytes - sessionsAll) / total6.received_bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas6\')\r\n var option = deepClone(pieOption)\r\n option.title.text = \'应用层协议流量占比\'\r\n option.series[0].data = pieDomainData6\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts7 () {\r\n var total7 = top10ProtocolMissCacheSessions.find(b => b.l7_protocol === \'total\')\r\n if (total7) {\r\n var pieDomainData7 = []\r\n var missedCache7 = top10ProtocolMissCacheSessions.filter(t => t.l7_protocol !== \'total\')\r\n var sessionsAll = 0\r\n pieDomainData7 = missedCache7.map(t => {\r\n sessionsAll += t.sessions\r\n return {\r\n value: t.sessions === 0 ? 0 : t.sessions / total7.sessions,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData7.push({ name: \'other\', value: (total7.sessions - sessionsAll) / total7.sessions })\r\n }\r\n var myChart = initEchartsInstance(\'canvas7\')\r\n var option = deepClone(pieOption)\r\n option.title.text = \'应用层协议会话占比\'\r\n option.series[0].data = pieDomainData7\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts12 () {\r\n var total12 = top10RelatedAppBytes.find(b => b.app_company === \'total\')\r\n if (total12) {\r\n var pieAppData12 = []\r\n var businessDistributionAppData12 = top10RelatedAppBytes.filter(t => t.app_company !== \'total\')\r\n var bytesAll = 0\r\n pieAppData12 = businessDistributionAppData12.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total12.bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieAppData12.push({ name: \'other\', value: (total12.bytes - bytesAll) / total12.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas12\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieAppData12\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n function initEcharts14 () {\r\n var total14 = top10AppMissCacheBytes.find(b => b.app_company === \'total\')\r\n if (total14) {\r\n var pieDomainData14 = []\r\n var missedCache14 = top10AppMissCacheBytes.filter(t => t.app_company !== \'total\')\r\n var receivedBytesAll = 0\r\n pieDomainData14 = missedCache14.map(t => {\r\n receivedBytesAll += t.received_bytes\r\n return {\r\n value: t.received_bytes === 0 ? 0 : t.received_bytes / total14.received_bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieDomainData14.push({ name: \'other\', value: (total14.received_bytes - receivedBytesAll) / total14.received_bytes })\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData14\r\n option.title.text = \'APP流量占比\'\r\n myChart.setOption(option)\r\n }\r\n function initEcharts15 () {\r\n var total15 = top10AppMissCacheSessions.find(b => b.app_company === \'total\')\r\n if (total15) {\r\n var pieDomainData15 = []\r\n var missedCache15 = top10AppMissCacheSessions.filter(t => t.app_company !== \'total\')\r\n var sessionsAll = 0\r\n pieDomainData15 = missedCache15.map(t => {\r\n sessionsAll += t.sessions\r\n return {\r\n value: t.sessions === 0 ? 0 : t.sessions / total15.sessions,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieDomainData15.push({ name: \'other\', value: (total15.sessions - sessionsAll) / total15.sessions })\r\n }\r\n var myChart = initEchartsInstance(\'canvas15\')\r\n var option = deepClone(pieOption)\r\n option.title.text = \'APP会话占比\'\r\n option.series[0].data = pieDomainData15\r\n myChart.setOption(option)\r\n }\r\n function initEcharts16 () {\r\n var total16 = top10DomainMissCacheBytes.find(b => b.domain === \'total\')\r\n if (total16) {\r\n var pieDomainData16 = []\r\n var missedCache16 = top10DomainMissCacheBytes.filter(t => t.domain !== \'total\')\r\n var receivedBytesAll = 0\r\n pieDomainData16 = missedCache16.map(t => {\r\n receivedBytesAll += t.received_bytes\r\n return {\r\n value: t.received_bytes === 0 ? 0 : t.received_bytes / total16.received_bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData16.push({ name: \'other\', value: (total16.received_bytes - receivedBytesAll) / total16.received_bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas16\')\r\n var option = deepClone(pieOption)\r\n option.title.text = \'域名流量占比\'\r\n option.series[0].data = pieDomainData16\r\n myChart.setOption(option)\r\n }\r\n function initEcharts17 () {\r\n var total17 = top10DomainMissCacheSessions.find(b => b.domain === \'total\')\r\n if (total17) {\r\n var pieDomainData17 = []\r\n var missedCache17 = top10DomainMissCacheSessions.filter(t => t.domain !== \'total\')\r\n var sessionsAll = 0\r\n pieDomainData17 = missedCache17.map(t => {\r\n sessionsAll += t.sessions\r\n return {\r\n value: t.sessions === 0 ? 0 : t.sessions / total17.sessions,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData17.push({ name: \'other\', value: (total17.sessions - sessionsAll) / total17.sessions })\r\n }\r\n var myChart = initEchartsInstance(\'canvas17\')\r\n var option = deepClone(pieOption)\r\n option.title.text = \'域名会话占比\'\r\n option.series[0].data = pieDomainData17\r\n myChart.setOption(option)\r\n }\r\n\r\n var barOption3 = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n function initEcharts19 () {\r\n var totalBytes19 = 0\r\n var missCacheBytes19 = 0\r\n var categoryData19 = [\'内容获取会话总流量\', \'提供服务的会话总流量\']\r\n if (xxxServiceTrafficBytes[0] && xxxServiceTrafficBytes[0].received_bytes) {\r\n totalBytes19 = xxxServiceTrafficBytes[0].received_bytes\r\n }\r\n if (xxxServiceMissCacheBytes[0] && xxxServiceMissCacheBytes[0].received_bytes) {\r\n missCacheBytes19 = xxxServiceMissCacheBytes[0].received_bytes\r\n }\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = {\r\n animation: false,\r\n color: [chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData19,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n data: [missCacheBytes19, totalBytes19],\r\n barWidth: 40,\r\n barMinHeight: 2,\r\n label: {\r\n show: true,\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n position: \'top\',\r\n fontSize: 10,\r\n formatter (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n function initEcharts20 () {\r\n var totalBytes20 = 0\r\n var missCacheBytes20 = 0\r\n var categoryData20 = [\'内容获取会话数\', \'提供服务的会话数\']\r\n if (xxxServiceTotalSessions[0] && xxxServiceTotalSessions[0].sessions) {\r\n totalBytes20 = xxxServiceTotalSessions[0].sessions\r\n }\r\n if (xxxServiceMissCacheSessions[0] && xxxServiceMissCacheSessions[0].sessions) {\r\n missCacheBytes20 = xxxServiceMissCacheSessions[0].sessions\r\n }\r\n var myChart = initEchartsInstance(\'canvas20\')\r\n var option = {\r\n animation: false,\r\n color: [chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData20,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.number).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n data: [missCacheBytes20, totalBytes20],\r\n barWidth: 40,\r\n barMinHeight: 2,\r\n label: {\r\n show: true,\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n position: \'top\',\r\n fontSize: 10,\r\n formatter (param) {\r\n return unitConvert(param.value, unitTypes.number).join(\'\')\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n function initEcharts21 () {\r\n var province21 = Top3ProvinceAppTrafficBytesTotal[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province21, pre1stTop3ProvinceAppTrafficBytesTotal, pre2ndTop3ProvinceAppTrafficBytesTotal, provinceTrafficAppBytes1st, preProvinceAppTrafficBytes1st, pre2ndProvinceAppTrafficBytes1st, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas21\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts22 () {\r\n var province22 = Top3ProvinceAppTrafficBytesTotal[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province22, pre1stTop3ProvinceAppTrafficBytesTotal, pre2ndTop3ProvinceAppTrafficBytesTotal, provinceTrafficAppBytes2nd, preProvinceTrafficAppBytes2nd, pre2ndProvinceTrafficAppBytes2nd, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas22\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts23 () {\r\n var province23 = Top3ProvinceAppTrafficBytesTotal[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province23, pre1stTop3ProvinceAppTrafficBytesTotal, pre2ndTop3ProvinceAppTrafficBytesTotal, provinceTrafficBytesTotal3rd, preProvinceTrafficBytesTotal3rd, pre2ndProvinceTrafficBytesTotal3rd, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas23\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts24 () {\r\n var province24 = topAppCompanyProvinceTrafficBytesTotal[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province24, pre1stTopAppCompanyProvinceTrafficBytesTotal, pre2ndTopAppCompanyProvinceTrafficBytesTotal, appCompanyProvinceTrafficBytes1st, preAppCompanyProvinceTrafficBytes1st, pre2ndAppCompanyProvinceTrafficBytes1st, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas24\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts25 () {\r\n var province25 = topAppCompanyProvinceTrafficBytesTotal[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province25, pre1stTopAppCompanyProvinceTrafficBytesTotal, pre2ndTopAppCompanyProvinceTrafficBytesTotal, appCompanyProvinceTrafficBytes2nd, preAppCompanyProvinceTrafficBytes2nd, pre2ndAppCompanyProvinceTrafficBytes2nd, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas25\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts26 () {\r\n var province26 = topAppCompanyProvinceTrafficBytesTotal[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province26, pre1stTopAppCompanyProvinceTrafficBytesTotal, pre2ndTopAppCompanyProvinceTrafficBytesTotal, appCompanyProvinceTrafficBytes3rd, preAppCompanyProvinceTrafficBytes3rd, pre2ndAppCompanyProvinceTrafficBytes3rd, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas26\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts27 () {\r\n var region27 = top3RegionAppTrafficBytesTotal[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(region27, pre1stTop3RegionAppTrafficBytesTotal, pre2ndTop3RegionAppTrafficBytesTotal, regionAppTrafficBytes1st, preRegionAppTrafficBytes1st, pre2ndRegionAppTrafficBytes1st, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas27\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts28 () {\r\n var region28 = top3RegionAppTrafficBytesTotal[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(region28, pre1stTop3RegionAppTrafficBytesTotal, pre2ndTop3RegionAppTrafficBytesTotal, regionAppTrafficBytes2nd, preRegionAppTrafficBytes2nd, pre2ndRegionAppTrafficBytes2nd, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas28\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts29 () {\r\n var region29 = top3RegionAppTrafficBytesTotal[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(region29, pre1stTop3RegionAppTrafficBytesTotal, pre2ndTop3RegionAppTrafficBytesTotal, regionAppTrafficBytes3rd, preRegionAppTrafficBytes3rd, pre2ndRegionAppTrafficBytes3rd, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas29\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts30 () {\r\n var province30 = top3AppCompanyRegionTrafficBytesTotal[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province30, pre1stTop3AppCompanyRegionTraffic, pre2ndTop3AppCompanyRegionTrafficBytesTotal, appCompanyRegionTrafficBytes1st, preAppCompanyRegionTrafficBytes1st, pre2ndAppCompanyRegionTrafficBytes1st, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas30\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts31 () {\r\n var province31 = top3AppCompanyRegionTrafficBytesTotal[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province31, pre1stTop3AppCompanyRegionTraffic, pre2ndTop3AppCompanyRegionTrafficBytesTotal, appCompanyRegionTrafficBytes2nd, preAppCompanyRegionTrafficBytes2nd, pre2ndAppCompanyRegionTrafficBytes2nd, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas31\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts32 () {\r\n var province32 = top3AppCompanyRegionTrafficBytesTotal[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province32, pre1stTop3AppCompanyRegionTraffic, pre2ndTop3AppCompanyRegionTrafficBytesTotal, appCompanyRegionTrafficBytes3rd, preAppCompanyRegionTrafficBytes3rd, pre2ndAppCompanyRegionTrafficBytes3rd, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas32\')\r\n var option = deepClone(barOption3)\r\n\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts6() } catch (e) { console.error(e) }\r\n try { initEcharts7() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts12() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts15() } catch (e) { console.error(e) }\r\n try { initEcharts16() } catch (e) { console.error(e) }\r\n try { initEcharts17() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initEcharts20() } catch (e) { console.error(e) }\r\n try { initEcharts21() } catch (e) { console.error(e) }\r\n try { initEcharts22() } catch (e) { console.error(e) }\r\n try { initEcharts23() } catch (e) { console.error(e) }\r\n try { initEcharts24() } catch (e) { console.error(e) }\r\n try { initEcharts25() } catch (e) { console.error(e) }\r\n try { initEcharts26() } catch (e) { console.error(e) }\r\n try { initEcharts27() } catch (e) { console.error(e) }\r\n try { initEcharts28() } catch (e) { console.error(e) }\r\n try { initEcharts29() } catch (e) { console.error(e) }\r\n try { initEcharts30() } catch (e) { console.error(e) }\r\n try { initEcharts31() } catch (e) { console.error(e) }\r\n try { initEcharts32() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n\r\n</body></html>', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"Tenant\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.Tenant\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceZATrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceZATrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2stxxxServiceZATrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceZARegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceZARegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stxxxServiceZARegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceAZTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceAZTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stxxxServiceAZTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceAZRegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceAZRegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stxxxServiceAZRegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= toDateTime(${startTime}) AND recv_time < toDateTime(${endTime}) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceZATcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceZATcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceZAPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceZAPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceAZTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceAZTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceAZPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceAZPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedAppBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time <${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stProvinceZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stProvinceZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Top3ProvinceAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stTop3ProvinceAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndTop3ProvinceAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficAppBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preProvinceAppTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceAppTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficAppBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preProvinceTrafficAppBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceTrafficAppBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficBytesTotal3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preProvinceTrafficBytesTotal3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceTrafficBytesTotal3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"topAppCompanyProvinceTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stTopAppCompanyProvinceTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company \",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndTopAppCompanyProvinceTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyProvinceTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyProvinceTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyProvinceTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyProvinceTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyProvinceTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyProvinceTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyProvinceTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyProvinceTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyProvinceTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stProvinceAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stProvinceAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stRegionZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stRegionZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top3RegionAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stTop3RegionAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndTop3RegionAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionAppTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preRegionAppTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionAppTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionAppTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preRegionAppTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionAppTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionAppTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preRegionAppTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionAppTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top3AppCompanyRegionTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stTop3AppCompanyRegionTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndTop3AppCompanyRegionTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyRegionTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyRegionTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyRegionTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyRegionTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1,1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyRegionTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1,1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyRegionTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyRegionTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2,1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyRegionTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2,1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyRegionTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stRegionAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stRegionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(received_bytes) AS received_bytes, server_ip_tags AS server_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_ip_tags ORDER BY received_bytes DESC LIMIT 1\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(received_bytes) AS received_bytes, client_ip_tags AS client_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY client_ip_tags ORDER BY received_bytes DESC LIMIT 1\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceMissCacheBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, server_ip_tags AS server_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_ip_tags ORDER BY sessions DESC LIMIT 1\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTotalSessions\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, client_ip_tags AS client_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY client_ip_tags ORDER BY sessions DESC LIMIT 1\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceMissCacheSessions\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(received_bytes) AS received_bytes, app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY app_company ORDER BY received_bytes DESC LIMIT 10 UNION ALL SELECT SUM(received_bytes) AS received_bytes, \'total\' AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY app_company ORDER BY received_bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10AppMissCacheBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(received_bytes) AS received_bytes, domain AS domain FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY domain ORDER BY received_bytes DESC LIMIT 10 UNION ALL SELECT SUM(received_bytes) AS received_bytes, \'total\' AS domain FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY domain ORDER BY received_bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10DomainMissCacheBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(received_bytes) AS received_bytes, l7_protocol AS l7_protocol FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY l7_protocol ORDER BY received_bytes DESC LIMIT 10 UNION ALL SELECT SUM(received_bytes) AS received_bytes, \'total\' AS l7_protocol FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY l7_protocol ORDER BY received_bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10ProtocolMissCacheBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY app_company ORDER BY sessions DESC LIMIT 10 UNION ALL SELECT SUM(sessions) AS sessions, \'total\' AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY app_company ORDER BY sessions DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10AppMissCacheSessions\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, domain AS domain FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY domain ORDER BY sessions DESC LIMIT 10 UNION ALL SELECT SUM(sessions) AS sessions, \'total\' AS domain FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY domain ORDER BY sessions DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10DomainMissCacheSessions\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, l7_protocol AS l7_protocol FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY l7_protocol ORDER BY sessions DESC LIMIT 10 UNION ALL SELECT SUM(sessions) AS sessions, \'total\' AS l7_protocol FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY l7_protocol ORDER BY sessions DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10ProtocolMissCacheSessions\"\r\n }\r\n ]\r\n}\r\n\r\n\r\n', 1, '2022-06-21 14:57:42', 1, '2022-06-21 14:57:48', NULL); -INSERT INTO `report_category` VALUES (2, 'IDC网络质量报告', '<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<#setting number_format=\"0.####\"/>\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <title>IDC整体流量监测报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IDC整体流量监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficRate,0,\'rate_avg\',\'number\'),getFromArr(trafficRatePre1st,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficRatePre1st,0,\'rate_avg\',\'number\'),getFromArr(trafficRatePre2nd,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficSummary,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficSummary,0,\'bytes\',\'number\'),getFromArr(trafficSummaryPre1st,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficSummaryPre1st,0,\'bytes\',\'number\'),getFromArr(trafficSummaryPre2nd,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务流量排名</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">APP流量速率</th>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图2 TOP10 APP流量情况</div>\r\n</div>\r\n\r\n<div class=\"header2\">三.服务质量概况</div>\r\n<div class=\"header3\">1.整体质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 客户端访问 IDC (Z-A) 的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_avg\',\'number\'),getFromArr(TCPConnectionEstablishmentZAPre1st,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(packetRetransRateZAPre1st,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 IDC内容获取(A-Z)的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_avg\',\'number\'),getFromArr(TCPConnectionEstablishmentAZPre1st,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(packetRetransRateAZPre1st,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"header3\">2.业务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表4 TOP10 APP服务质量情况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th rowspan=\"2\" class=\"table__th\">APP</th>\r\n <th rowspan=\"2\" class=\"table__th\">流量占比</th>\r\n <th colspan=\"3\" class=\"table__th\">TCP会话延迟(ms)</th>\r\n <th colspan=\"3\" class=\"table__th\">重传率</th>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">${getFromObj(val,\'app_company\',\'string\')}</td>\r\n <td class=\"table__td\">${proportion(getFromObj(val,\'bytes\',\'number\'),getFromArr(trafficSummary,0,\'bytes\',\'number\'))}</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany),\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany),\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany),\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(TCPConnectionEstablishmentTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany),\'establish_latency_avg\',\'number\'),getFromArr(TCPConnectionEstablishmentTop10AppCompanyPre1st,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompanyPre1st),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(packetRetransRateTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompany),\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(packetRetransRateTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompany),\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(packetRetransRateTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompany),\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompany),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(packetRetransRateTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompany),\'pkt_retrans_percent_avg\',\'number\'),getFromArr(packetRetransRateTop10AppCompanyPre1st,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompanyPre1st),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </#list>\r\n </#if>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div class=\"header2\">四.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceSentTrafficSummaryTop10ZA??>\r\n <#list provinceSentTrafficSummaryTop10ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceSentTrafficSummaryTop10ZA??>\r\n <#list provinceSentTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceSentTrafficSummaryTop10ZA??>\r\n <#list provinceSentTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图3 IDC对外(省Z-A)服务能力的TOP10省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceReceivedTrafficSummaryTop10ZA??>\r\n <#list provinceReceivedTrafficSummaryTop10ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceReceivedTrafficSummaryTop10ZA??>\r\n <#list provinceReceivedTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceReceivedTrafficSummaryTop10ZA??>\r\n <#list provinceReceivedTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 IDC对外(省Z-A)服务能力的TOP10省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if provinceTrafficSummaryTop3ZA??>\r\n <#list provinceTrafficSummaryTop3ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas24\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas25\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas26\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange1\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange1\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange1\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图5 IDC对外(省Z-A)提供服务TOP3省份的APP的流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if appTrafficSummaryTop3ZA??>\r\n <#list appTrafficSummaryTop3ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas27\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas28\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas29\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange2\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange2\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange2\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图6 IDC对外(省 Z-A)提供服务TOP3 APP的各省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceSentTrafficSummaryTop10AZ??>\r\n <#list provinceSentTrafficSummaryTop10AZ as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceSentTrafficSummaryTop10AZ??>\r\n <#list provinceSentTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceSentTrafficSummaryTop10AZ??>\r\n <#list provinceSentTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 IDC内容获取(省A-Z)服务能力的TOP10省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas6\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceReceivedTrafficSummaryTop10AZ??>\r\n <#list provinceReceivedTrafficSummaryTop10AZ as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceReceivedTrafficSummaryTop10AZ??>\r\n <#list provinceReceivedTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceReceivedTrafficSummaryTop10AZ??>\r\n <#list provinceReceivedTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 IDC内容获取(省A-Z)服务能力的TOP10省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas7\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceSentTrafficSummaryTop10ZA??>\r\n <#list inProvinceSentTrafficSummaryTop10ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceSentTrafficSummaryTop10ZA??>\r\n <#list inProvinceSentTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceSentTrafficSummaryTop10ZA??>\r\n <#list inProvinceSentTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 IDC对内(地市Z-A)服务能力的TOP10省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceReceivedTrafficSummaryTop10ZA??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10ZA??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10ZA??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 IDC对内(地市Z-A)服务能力的TOP10省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3ZA??>\r\n <#list inProvinceTrafficSummaryTop3ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas11\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas12\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas13\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange3\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange3\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange3\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图11 IDC对内(地市Z-A)服务能力的TOP3省内地区主要app流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3AppZA??>\r\n <#list inProvinceTrafficSummaryTop3AppZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas14\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas15\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas16\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange4\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange4\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange4\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图12 IDC对内(地市Z-A)服务能力的TOP3 APP的省内地区流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceSentTrafficSummaryTop10AZ??>\r\n <#list inProvinceSentTrafficSummaryTop10AZ as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceSentTrafficSummaryTop10AZ??>\r\n <#list inProvinceSentTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceSentTrafficSummaryTop10AZ??>\r\n <#list inProvinceSentTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图13 IDC内容获取(地市A-Z)服务能力的TOP10省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceReceivedTrafficSummaryTop10AZ??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZ as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10AZ??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10AZ??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图14 IDC内容获取(地市A-Z)服务能力的TOP10省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header2\">五.IDC租用方内容收敛情况</div>\r\n<div class=\"echarts-box indent-3\">\r\n <#if IDCTrafficSessionTop3??>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas18\"></div>\r\n </div>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas19\"></div>\r\n </div>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas20\"></div>\r\n </div>\r\n </#if>\r\n</div>\r\n<div class=\"echarts__title\">图15 TOP3 IDC租用方会话分布</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <#if IDCWithoutTrafficSessionTop3??>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas21\"></div>\r\n </div>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas22\"></div>\r\n </div>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas23\"></div>\r\n </div>\r\n </#if>\r\n</div>\r\n<div class=\"echarts__title\">图16 TOP3 IDC租用方流量分布</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n var timeZoneOffset = ${timeZoneOffset}\r\n // 1.1.1 总流量\r\n var trafficSummary = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummary,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummary,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummary,0,\'bytes\')/1024},\r\n sessions: ${jsGetNumFromArr(trafficSummary,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.2 前一周期总流量\r\n var trafficSummaryPre1st = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes\')/1024},\r\n sessions: ${jsGetNumFromArr(trafficSummaryPre1st,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.3 前两周期总流量\r\n var trafficSummaryPre2nd = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes\')/1024},\r\n sessions: ${jsGetNumFromArr(trafficSummaryPre2nd,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.4 流量速率\r\n var trafficRate = {\r\n rate50: ${jsGetNumFromArr(trafficRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(trafficRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(trafficRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRate,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.5 前一周期流量速率\r\n var trafficRatePre1st = {\r\n rate50: ${jsGetNumFromArr(trafficRatePre1st,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(trafficRatePre1st,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(trafficRatePre1st,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.6 前两周期流量速率\r\n var trafficRatePre2nd = {\r\n rate50: ${jsGetNumFromArr(trafficRatePre2nd,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(trafficRatePre2nd,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(trafficRatePre2nd,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.7 域外访问域内总流量\r\n var trafficSummaryToIDC = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryToIDC,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryToIDC,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryToIDC,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.8 前一周期域外访问域内总流量\r\n var trafficSummaryToIDCPre1st = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryToIDCPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryToIDCPre1st,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryToIDCPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.9 域内访问域外总流量\r\n var trafficSummaryIDCTo = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryIDCTo,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryIDCTo,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryIDCTo,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.10 前一周期域内访问域外总流量\r\n var trafficSummaryIDCToPre1st = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryIDCToPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryIDCToPre1st,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryIDCToPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.11 省内域外访问域内总流量\r\n var inProvinceTrafficSummaryToIDC = {\r\n bytes_sent: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDC,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDC,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDC,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.12 前一周期省内域外访问域内总流量\r\n var inProvinceTrafficSummaryToIDCPre1st = {\r\n bytes_sent: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDCPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDCPre1st,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDCPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.13 省内域内访问域外总流量\r\n var inProvinceTrafficSummaryIDCTo = {\r\n bytes_sent: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCTo,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCTo,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCTo,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.14 前一周期省内域内访问域外总流量\r\n var inProvinceTrafficSummaryIDCToPre1st = {\r\n bytes_sent: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCToPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCToPre1st,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCToPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1. 整体流量\r\n // 1.2.1 流量变化曲线\r\n var trafficRateTrend = [\r\n <#if trafficRateTrend??>\r\n <#list trafficRateTrend as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000}, rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 流量速率\r\n var quantile1 = {\r\n rate50: ${jsGetNumFromArr(trafficRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(trafficRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(trafficRate,0,\'rate99\')/1000}\r\n }\r\n\r\n // 2. 业务流量\r\n // 2.1.1 Top 10 App流量概况\r\n var appCompanyTrafficTop10 = [\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.2 前一周期Top 10 App Company Traffic\r\n var appCompanyTrafficTop10Pre1st = [\r\n <#if appCompanyTrafficTop10Pre1st??>\r\n <#list appCompanyTrafficTop10Pre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3 前两周期Top 10 App Company Traffic\r\n var appCompanyTrafficTop10Pre2nd = [\r\n <#if appCompanyTrafficTop10Pre2nd??>\r\n <#list appCompanyTrafficTop10Pre2nd as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 3. 服务质量概况\r\n\r\n // 3.1 客户端访问IDC(Z-A)的服务质量\r\n // 3.1.1 TCP会话创建延迟\r\n var TCPConnectionEstablishmentZA = {\r\n <#if TCPConnectionEstablishmentZA??>\r\n <#list TCPConnectionEstablishmentZA as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.1.2 前一周期TCP会话创建延迟\r\n var TCPConnectionEstablishmentZAPre1st = {\r\n <#if TCPConnectionEstablishmentZAPre1st??>\r\n <#list TCPConnectionEstablishmentZAPre1st as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.1.3 重传率\r\n var packetRetransRateZA = {\r\n <#if packetRetransRateZA??>\r\n <#list packetRetransRateZA as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.1.4 前一周期重传率\r\n var packetRetransRateZAPre1st = {\r\n <#if packetRetransRateZAPre1st??>\r\n <#list packetRetransRateZAPre1st as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.2 IDC内容获取(A-Z)的服务质量\r\n // 3.2.1 TCP会话创建延迟\r\n var TCPConnectionEstablishmentAZ = {\r\n <#if TCPConnectionEstablishmentAZ??>\r\n <#list TCPConnectionEstablishmentAZ as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.2.2 前一周期TCP会话创建延迟\r\n var TCPConnectionEstablishmentAZPre1st = {\r\n <#if TCPConnectionEstablishmentAZPre1st??>\r\n <#list TCPConnectionEstablishmentAZPre1st as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.2.3 重传率\r\n var packetRetransRateAZ = {\r\n <#if packetRetransRateAZ??>\r\n <#list packetRetransRateAZ as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.2.4 前一周期重传率\r\n var packetRetransRateAZPre1st = {\r\n <#if packetRetransRateAZPre1st??>\r\n <#list packetRetransRateAZPre1st as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3 Top10 App Companyf服务质量\r\n // 3.3.1 Top10 App Company TCP会话创建延迟\r\n var TCPConnectionEstablishmentTop10AppCompany = {\r\n <#if TCPConnectionEstablishmentTop10AppCompany??>\r\n <#list TCPConnectionEstablishmentTop10AppCompany as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.2 前一周期Top10 App Company TCP会话创建延迟\r\n var TCPConnectionEstablishmentTop10AppCompanyPre1st = {\r\n <#if TCPConnectionEstablishmentTop10AppCompanyPre1st??>\r\n <#list TCPConnectionEstablishmentTop10AppCompanyPre1st as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.3 重传率\r\n var packetRetransRateTop10AppCompany = {\r\n <#if packetRetransRateTop10AppCompany??>\r\n <#list packetRetransRateTop10AppCompany as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.4 前一周期重传率\r\n var packetRetransRateTop10AppCompanyPre1st = {\r\n <#if packetRetransRateTop10AppCompanyPre1st??>\r\n <#list packetRetransRateTop10AppCompanyPre1st as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 4. 地理位置分布\r\n //4.1 IDC对外(省Z-A)服务能力Top10省份请求流量分布\r\n\r\n // 4.1.1 Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10ZA = [\r\n <#if provinceSentTrafficSummaryTop10ZA??>\r\n <#list provinceSentTrafficSummaryTop10ZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.2 前一周期Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10ZAPre1st= [\r\n <#if provinceSentTrafficSummaryTop10ZAPre1st??>\r\n <#list provinceSentTrafficSummaryTop10ZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.3 前两周期Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10ZAPre2nd = [\r\n <#if provinceSentTrafficSummaryTop10ZAPre2nd??>\r\n <#list provinceSentTrafficSummaryTop10ZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 IDC对外(省Z-A)服务能力Top10省份响应流量分布\r\n // 4.2.1 Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10ZA = [\r\n <#if provinceReceivedTrafficSummaryTop10ZA??>\r\n <#list provinceReceivedTrafficSummaryTop10ZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.2 前一周期Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10ZAPre1st= [\r\n <#if provinceReceivedTrafficSummaryTop10ZAPre1st??>\r\n <#list provinceReceivedTrafficSummaryTop10ZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.3 前两周期Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10ZAPre2nd = [\r\n <#if provinceReceivedTrafficSummaryTop10ZAPre2nd??>\r\n <#list provinceReceivedTrafficSummaryTop10ZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3 IDC对外(省Z-A)提供服务TOP3省份的APP的流量占比\r\n // 4.3.1 Top3省份\r\n var provinceTrafficSummaryTop3ZA = [\r\n <#if provinceTrafficSummaryTop3ZA??>\r\n <#list provinceTrafficSummaryTop3ZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.2 前一周期Top3省份\r\n var provinceTrafficSummaryTop3ZAPre1st = [\r\n <#if provinceTrafficSummaryTop3ZAPre1st??>\r\n <#list provinceTrafficSummaryTop3ZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.3 前二周期Top3省份\r\n var provinceTrafficSummaryTop3ZAPre2nd = [\r\n <#if provinceTrafficSummaryTop3ZAPre2nd??>\r\n <#list provinceTrafficSummaryTop3ZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.4 1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyZA = [\r\n <#if firstProvinceTrafficTop5AppCompanyZA??>\r\n <#list firstProvinceTrafficTop5AppCompanyZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.5 前一周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if firstProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list firstProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.6 前二周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if firstProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list firstProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.7 2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyZA = [\r\n <#if secondProvinceTrafficTop5AppCompanyZA??>\r\n <#list secondProvinceTrafficTop5AppCompanyZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.8 前一周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if secondProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list secondProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.9 前二周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if secondProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list secondProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.10 3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyZA = [\r\n <#if thirdProvinceTrafficTop5AppCompanyZA??>\r\n <#list thirdProvinceTrafficTop5AppCompanyZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.11 前一周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if thirdProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list thirdProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.12 前二周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if thirdProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list thirdProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4 IDC对外(省Z-A)提供服务TOP3 APP的省份流量占比\r\n // 4.4.1 Top3 App\r\n var appTrafficSummaryTop3ZA = [\r\n <#if appTrafficSummaryTop3ZA??>\r\n <#list appTrafficSummaryTop3ZA as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.2 前一周期Top3 App\r\n var appTrafficSummaryTop3ZAPre1st = [\r\n <#if appTrafficSummaryTop3ZAPre1st??>\r\n <#list appTrafficSummaryTop3ZAPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.3 前二周期Top3 App\r\n var appTrafficSummaryTop3ZAPre2nd = [\r\n <#if appTrafficSummaryTop3ZAPre2nd??>\r\n <#list appTrafficSummaryTop3ZAPre2nd as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.4 1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceZA = [\r\n <#if firstAppTrafficTop5ProvinceZA??>\r\n <#list firstAppTrafficTop5ProvinceZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.5 前一周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceZAPre1st = [\r\n <#if firstAppTrafficTop5ProvinceZAPre1st??>\r\n <#list firstAppTrafficTop5ProvinceZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.6 前二周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceZAPre2nd = [\r\n <#if firstAppTrafficTop5ProvinceZAPre2nd??>\r\n <#list firstAppTrafficTop5ProvinceZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.7 2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceZA = [\r\n <#if secondAppTrafficTop5ProvinceZA??>\r\n <#list secondAppTrafficTop5ProvinceZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.8 前一周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceZAPre1st = [\r\n <#if secondAppTrafficTop5ProvinceZAPre1st??>\r\n <#list secondAppTrafficTop5ProvinceZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.9 前二周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceZAPre2nd = [\r\n <#if secondAppTrafficTop5ProvinceZAPre2nd??>\r\n <#list secondAppTrafficTop5ProvinceZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.10 3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceZA = [\r\n <#if thirdAppTrafficTop5ProvinceZA??>\r\n <#list thirdAppTrafficTop5ProvinceZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.11 前一周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceZAPre1st = [\r\n <#if thirdAppTrafficTop5ProvinceZAPre1st??>\r\n <#list thirdAppTrafficTop5ProvinceZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.12 前二周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceZAPre2nd = [\r\n <#if thirdAppTrafficTop5ProvinceZAPre2nd??>\r\n <#list thirdAppTrafficTop5ProvinceZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5 IDC内容获取(省A-Z)服务能力的Top10省份请求流量分布\r\n // 4.5.1 top10省份请求流量\r\n var provinceSentTrafficSummaryTop10AZ = [\r\n <#if provinceSentTrafficSummaryTop10AZ??>\r\n <#list provinceSentTrafficSummaryTop10AZ as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5.2 前一周期top10省份请求流量\r\n var provinceSentTrafficSummaryTop10AZPre1st= [\r\n <#if provinceSentTrafficSummaryTop10AZPre1st??>\r\n <#list provinceSentTrafficSummaryTop10AZPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5.3 前两周期top10省份请求流量\r\n var provinceSentTrafficSummaryTop10AZPre2nd = [\r\n <#if provinceSentTrafficSummaryTop10AZPre2nd??>\r\n <#list provinceSentTrafficSummaryTop10AZPre2nd as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6 IDC内容获取(省A-Z)服务能力的Top10省份响应流量分布\r\n // 4.6.1 top10省份响应流量\r\n var provinceReceivedTrafficSummaryTop10AZ = [\r\n <#if provinceReceivedTrafficSummaryTop10AZ??>\r\n <#list provinceReceivedTrafficSummaryTop10AZ as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6.2 前一周期top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10AZPre1st= [\r\n <#if provinceReceivedTrafficSummaryTop10AZPre1st??>\r\n <#list provinceReceivedTrafficSummaryTop10AZPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6.3 前两周期top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10AZPre2nd = [\r\n <#if provinceReceivedTrafficSummaryTop10AZPre2nd??>\r\n <#list provinceReceivedTrafficSummaryTop10AZPre2nd as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7 IDC对内(地市Z- A)服务能力的Top10省内地区请求流量分布\r\n // 4.7.1 top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10ZA = [\r\n <#if inProvinceSentTrafficSummaryTop10ZA??>\r\n <#list inProvinceSentTrafficSummaryTop10ZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7.2 前一周期top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10ZAPre1st = [\r\n <#if inProvinceSentTrafficSummaryTop10ZAPre1st??>\r\n <#list inProvinceSentTrafficSummaryTop10ZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7.3 前两周期top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10ZAPre2nd = [\r\n <#if inProvinceSentTrafficSummaryTop10ZAPre2nd??>\r\n <#list inProvinceSentTrafficSummaryTop10ZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8 IDC对内(地市Z-A)服务能力的Top10省份响应流量分布\r\n // 4.8.1 top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10ZA = [\r\n <#if inProvinceReceivedTrafficSummaryTop10ZA??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8.2 前一周期top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10ZAPre1st = [\r\n <#if inProvinceReceivedTrafficSummaryTop10ZAPre1st??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8.3 前两周期top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10ZAPre2nd = [\r\n <#if inProvinceReceivedTrafficSummaryTop10ZAPre2nd??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n // 4.9.1 IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3ZA = [\r\n <#if inProvinceTrafficSummaryTop3ZA??>\r\n <#list inProvinceTrafficSummaryTop3ZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.2 前一周期IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3ZAPre1st = [\r\n <#if inProvinceTrafficSummaryTop3ZAPre1st??>\r\n <#list inProvinceTrafficSummaryTop3ZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.3 前二周期IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3ZAPre2nd = [\r\n <#if inProvinceTrafficSummaryTop3ZAPre2nd??>\r\n <#list inProvinceTrafficSummaryTop3ZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.4 1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyZA = [\r\n <#if firstInProvinceTrafficTop5AppCompanyZA??>\r\n <#list firstInProvinceTrafficTop5AppCompanyZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.5 前一周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if firstInProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list firstInProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.6 前二周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if firstInProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list firstInProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.7 2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyZA = [\r\n <#if secondInProvinceTrafficTop5AppCompanyZA??>\r\n <#list secondInProvinceTrafficTop5AppCompanyZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.8 前一周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if secondInProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list secondInProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.9 前二周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if secondInProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list secondInProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.10 3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyZA = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyZA??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.11 前一周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.12 前二周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n // 4.10.1 IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppZA = [\r\n <#if inProvinceTrafficSummaryTop3AppZA??>\r\n <#list inProvinceTrafficSummaryTop3AppZA as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.2 前一周期IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppZAPre1st = [\r\n <#if inProvinceTrafficSummaryTop3AppZAPre1st??>\r\n <#list inProvinceTrafficSummaryTop3AppZAPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.3 前二周期IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppZAPre2nd = [\r\n <#if inProvinceTrafficSummaryTop3AppZAPre2nd??>\r\n <#list inProvinceTrafficSummaryTop3AppZAPre2nd as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.4 1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionZA = [\r\n <#if firstInProvinceTrafficTop5RegionZA??>\r\n <#list firstInProvinceTrafficTop5RegionZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.5 前一周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionZAPre1st = [\r\n <#if firstInProvinceTrafficTop5RegionZAPre1st??>\r\n <#list firstInProvinceTrafficTop5RegionZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.6 前二周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionZAPre2nd = [\r\n <#if firstInProvinceTrafficTop5RegionZAPre2nd??>\r\n <#list firstInProvinceTrafficTop5RegionZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.7 2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionZA = [\r\n <#if secondInProvinceTrafficTop5RegionZA??>\r\n <#list secondInProvinceTrafficTop5RegionZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.8 前一周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionZAPre1st = [\r\n <#if secondInProvinceTrafficTop5RegionZAPre1st??>\r\n <#list secondInProvinceTrafficTop5RegionZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.9 前二周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionZAPre2nd = [\r\n <#if secondInProvinceTrafficTop5RegionZAPre2nd??>\r\n <#list secondInProvinceTrafficTop5RegionZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.10 3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionZA = [\r\n <#if thirdInProvinceTrafficTop5RegionZA??>\r\n <#list thirdInProvinceTrafficTop5RegionZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.11 前一周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionZAPre1st = [\r\n <#if thirdInProvinceTrafficTop5RegionZAPre1st??>\r\n <#list thirdInProvinceTrafficTop5RegionZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.12 前二周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionZAPre2nd = [\r\n <#if thirdInProvinceTrafficTop5RegionZAPre2nd??>\r\n <#list thirdInProvinceTrafficTop5RegionZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.11 IDC内容获取(地市A-Z)服务能力的Top10省内地区请求流量分布\r\n // 4.11.1 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10AZ = [\r\n <#if inProvinceSentTrafficSummaryTop10AZ??>\r\n <#list inProvinceSentTrafficSummaryTop10AZ as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n\r\n // 4.11.2 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10AZPre1st = [\r\n <#if inProvinceSentTrafficSummaryTop10AZPre1st??>\r\n <#list inProvinceSentTrafficSummaryTop10AZPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.11.3 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10AZPre2nd = [\r\n <#if inProvinceSentTrafficSummaryTop10AZPre2nd??>\r\n <#list inProvinceSentTrafficSummaryTop10AZPre2nd as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12 IDC内容获取(地市A-Z)服务能力的Top10省内地区响应流量分布\r\n // 4.12.1 Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10AZ = [\r\n <#if inProvinceReceivedTrafficSummaryTop10AZ??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZ as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12.2 前一周期Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10AZPre1st = [\r\n <#if inProvinceReceivedTrafficSummaryTop10AZPre1st??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12.3 前两周期Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10AZPre2nd = [\r\n <#if inProvinceReceivedTrafficSummaryTop10AZPre2nd??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZPre2nd as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 5.1 Top3 IDC租用方流量、会话分布\r\n // 5.1.1 IDC总会话、总流量Top3\r\n var IDCTrafficSessionTop3 = [\r\n <#if IDCTrafficSessionTop3??>\r\n <#list IDCTrafficSessionTop3 as d>\r\n {sessions:${jsGetNumFromObj(d,\'sessions\')},bytes:${jsGetNumFromObj(d,\'bytes\')/ 1024},server_idc_renter:\"${getFromObj(d,\'server_idc_renter\',\'string\')}\"},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 5.1.2 IDC获取内容会话、流量\r\n var IDCWithoutTrafficSessionTop3 = [\r\n <#if IDCWithoutTrafficSessionTop3??>\r\n <#list IDCWithoutTrafficSessionTop3 as d>\r\n {sessions:${jsGetNumFromObj(d,\'sessions\')},bytes:${jsGetNumFromObj(d,\'bytes\')/1024},client_idc_renter:\"${getFromObj(d,\'client_idc_renter\',\'string\')}\"},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n trafficRateTrend = trafficRateTrend.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\'currentRange0\', \'currentRange1\', \'currentRange2\', \'currentRange3\', \'currentRange4\']\r\n var prevRanges = [\'prevRange0\', \'prevRange1\', \'prevRange2\', \'prevRange3\', \'prevRange4\']\r\n var statisticsRanges = [\r\n \'statisticsRange1\',\r\n \'statisticsRange2\',\r\n \'statisticsRange3\',\r\n \'statisticsRange4\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n // 1.2 流量变化曲线\r\n function initEcharts1() {\r\n var seriesData1 = trafficRateTrend.map(d => [d.stat_time, d.rate] )\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (quantile1.rate99 > quantile1.rate90 && quantile1.rate90 > quantile1.rate50 && (quantile1.rate90 && quantile1.rate50 && quantile1.rate99) !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: quantile1.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: quantile1.rate50,\r\n lte: quantile1.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: quantile1.rate90,\r\n lte: quantile1.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: quantile1.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: quantile1.rate50\r\n },\r\n {\r\n yAxis: quantile1.rate90\r\n },\r\n {\r\n yAxis: quantile1.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n textBorderColor: \'white\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n\r\n // 2.1 Top 10 App流量概况\r\n function initEcharts2 () {\r\n var categoryData2 = appCompanyTrafficTop10.map(t => checkXAxisIsEmpty(t.app_company))\r\n var barSeriesData2 = appCompanyTrafficTop10.map(t => {\r\n if (!t.bytes) {\r\n t.bytes = 0\r\n }\r\n return {\r\n value: t.bytes,\r\n percent: trafficSummary.bytes === 0 ? 0 : parseFloat(t.bytes) / trafficSummary.bytes\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n appCompanyTrafficTop10.forEach(t => {\r\n var findData = appCompanyTrafficTop10Pre1st.find(pt => pt.app_company === t.app_company)\r\n if (findData && findData.bytes) {\r\n lineSeriesData1_2.push(findData.bytes === 0 ? 0 : parseFloat(((t.bytes - findData.bytes) / parseFloat(findData.bytes) * 100).toFixed(2)))\r\n var findData2 = appCompanyTrafficTop10Pre2nd.find(ppt => findData.app_company === ppt.app_company)\r\n if (findData2 && findData2.bytes) {\r\n lineSeriesData2_2.push(findData2.bytes === 0 ? 0 : parseFloat(((findData.bytes - findData2.bytes) / parseFloat(findData2.bytes) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].name = \'流量\'\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.1 IDC对外(省Z-A)服务能力Top10省份请求流量分布\r\n function initEcharts3 () {\r\n var categoryData3 = provinceSentTrafficSummaryTop10ZA.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceSentTrafficSummaryTop10ZA.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryToIDC.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryToIDC.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceSentTrafficSummaryTop10ZA.forEach(t => {\r\n var findData = provinceSentTrafficSummaryTop10ZAPre1st.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = provinceSentTrafficSummaryTop10ZAPre2nd.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_3.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 3\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.2 IDC对外(省Z-A)服务能力Top10省份响应流量分布\r\n function initEcharts4 () {\r\n var categoryData4 = provinceReceivedTrafficSummaryTop10ZA.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData4 = provinceReceivedTrafficSummaryTop10ZA.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryToIDC.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryToIDC.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n provinceReceivedTrafficSummaryTop10ZA.forEach(t => {\r\n var findData = provinceReceivedTrafficSummaryTop10ZAPre1st.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_4.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = provinceReceivedTrafficSummaryTop10ZAPre2nd.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_4.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.5 IDC内容获取(省A-Z)服务能力的Top10省份请求流量分布\r\n function initEcharts5 () {\r\n var categoryData5 = provinceSentTrafficSummaryTop10AZ.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData5 = provinceSentTrafficSummaryTop10AZ.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryIDCTo.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryIDCTo.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n provinceSentTrafficSummaryTop10AZ.forEach(t => {\r\n var findData = provinceSentTrafficSummaryTop10AZPre1st.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = provinceSentTrafficSummaryTop10AZPre2nd.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.6 IDC内容获取(省A-Z)服务能力的Top10省份响应流量分布\r\n function initEcharts6 () {\r\n var categoryData6 = provinceReceivedTrafficSummaryTop10AZ.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData6 = provinceReceivedTrafficSummaryTop10AZ.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryIDCTo.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryIDCTo.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_6 = []\r\n // 第二条线\r\n var lineSeriesData2_6 = []\r\n provinceReceivedTrafficSummaryTop10AZ.forEach(t => {\r\n var findData = provinceReceivedTrafficSummaryTop10AZPre1st.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_6.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = provinceReceivedTrafficSummaryTop10AZPre2nd.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_6.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_6.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_6.push(0)\r\n lineSeriesData2_6.push(0)\r\n }\r\n })\r\n var copyLineSeriesData6 = [...lineSeriesData1_6, ...lineSeriesData2_6]\r\n var copyBarSeriesData6 = [...barSeriesData6]\r\n copyLineSeriesData6.sort((a, b) => a - b)\r\n copyBarSeriesData6.sort((a, b) => a.value - b.value)\r\n var barMax6 = copyBarSeriesData6.length > 0 ? copyBarSeriesData6[copyBarSeriesData6.length - 1].value : 50\r\n var lineMin6 = copyLineSeriesData6[0] ? copyLineSeriesData6[0] : 0\r\n var lineMax6 = copyLineSeriesData6.length > 0 ? copyLineSeriesData6[copyLineSeriesData6.length - 1] : 0\r\n if (lineMin6 == 0 && lineMin6 == lineMax6) {\r\n lineMin6 = -5\r\n lineMax6 = 1\r\n } else {\r\n var tempLineMin6 = lineMin6\r\n lineMin6 = lineMin6 - 2.5 * (lineMax6 - lineMin6)\r\n lineMax6 = lineMax6 + 0.5 * (lineMax6 - tempLineMin6)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas6\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData6\r\n option.yAxis[0].max = barMax6 * 2\r\n option.yAxis[1].min = lineMin6\r\n option.yAxis[1].max = lineMax6\r\n option.series[0].data = barSeriesData6\r\n option.series[1].data = lineSeriesData1_6\r\n option.series[2].data = lineSeriesData2_6\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.7 IDC对内(地市Z- A)服务能力的Top10省内地区请求流量分布\r\n function initEcharts7 () {\r\n var categoryData7 = inProvinceSentTrafficSummaryTop10ZA.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData7 = inProvinceSentTrafficSummaryTop10ZA.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: inProvinceTrafficSummaryToIDC.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / inProvinceTrafficSummaryToIDC.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_7 = []\r\n // 第二条线\r\n var lineSeriesData2_7 = []\r\n inProvinceSentTrafficSummaryTop10ZA.forEach(t => {\r\n var findData = inProvinceSentTrafficSummaryTop10ZAPre1st.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_7.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = inProvinceSentTrafficSummaryTop10ZAPre2nd.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_7.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_7.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_7.push(0)\r\n lineSeriesData2_7.push(0)\r\n }\r\n })\r\n var copyLineSeriesData7 = [...lineSeriesData1_7, ...lineSeriesData2_7]\r\n var copyBarSeriesData7 = [...barSeriesData7]\r\n copyLineSeriesData7.sort((a, b) => a - b)\r\n copyBarSeriesData7.sort((a, b) => a.value - b.value)\r\n var barMax7 = copyBarSeriesData7.length > 0 ? copyBarSeriesData7[copyBarSeriesData7.length - 1].value : 50\r\n var lineMin7 = copyLineSeriesData7[0] ? copyLineSeriesData7[0] : 0\r\n var lineMax7 = copyLineSeriesData7.length > 0 ? copyLineSeriesData7[copyLineSeriesData7.length - 1] : 0\r\n if (lineMin7 == 0 && lineMin7 == lineMax7) {\r\n lineMin7 = -5\r\n lineMax7 = 1\r\n } else {\r\n var tempLineMin7 = lineMin7\r\n lineMin7 = lineMin7 - 2.5 * (lineMax7 - lineMin7)\r\n lineMax7 = lineMax7 + 0.5 * (lineMax7 - tempLineMin7)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas7\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData7\r\n option.yAxis[0].max = barMax7 * 2\r\n option.yAxis[1].min = lineMin7\r\n option.yAxis[1].max = lineMax7\r\n option.series[0].data = barSeriesData7\r\n option.series[1].data = lineSeriesData1_7\r\n option.series[2].data = lineSeriesData2_7\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.8 IDC对内(地市Z-A)服务能力的Top10省份响应流量分布\r\n function initEcharts8 () {\r\n var categoryData8 = inProvinceReceivedTrafficSummaryTop10ZA.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData8 = inProvinceReceivedTrafficSummaryTop10ZA.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: inProvinceTrafficSummaryToIDC.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / inProvinceTrafficSummaryToIDC.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n inProvinceReceivedTrafficSummaryTop10ZA.forEach(t => {\r\n var findData = inProvinceReceivedTrafficSummaryTop10ZAPre1st.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = inProvinceReceivedTrafficSummaryTop10ZAPre2nd.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.11 IDC内容获取(地市A-Z)服务能力的Top10省内地区请求流量分布\r\n function initEcharts9 () {\r\n var categoryData9 = inProvinceSentTrafficSummaryTop10AZ.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData9 = inProvinceSentTrafficSummaryTop10AZ.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: inProvinceTrafficSummaryIDCTo.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / inProvinceTrafficSummaryIDCTo.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n inProvinceSentTrafficSummaryTop10AZ.forEach(t => {\r\n var findData = inProvinceSentTrafficSummaryTop10AZPre1st.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_9.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = inProvinceSentTrafficSummaryTop10AZPre2nd.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_9.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.12 IDC内容获取(地市A-Z)服务能力的Top10省内地区响应流量分布\r\n function initEcharts10 () {\r\n var categoryData10 = inProvinceReceivedTrafficSummaryTop10AZ.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = inProvinceReceivedTrafficSummaryTop10AZ.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: inProvinceTrafficSummaryIDCTo.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / inProvinceTrafficSummaryIDCTo.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n inProvinceReceivedTrafficSummaryTop10AZ.forEach(t => {\r\n var findData = inProvinceReceivedTrafficSummaryTop10AZPre1st.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = inProvinceReceivedTrafficSummaryTop10AZPre2nd.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n var option = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n // 4.9 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n function initEcharts11 () {\r\n var province11 = inProvinceTrafficSummaryTop3ZA[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province11, inProvinceTrafficSummaryTop3ZAPre1st, inProvinceTrafficSummaryTop3ZAPre2nd, firstInProvinceTrafficTop5AppCompanyZA, firstInProvinceTrafficTop5AppCompanyZAPre1st, firstInProvinceTrafficTop5AppCompanyZAPre2nd, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts12 () {\r\n var province12 = inProvinceTrafficSummaryTop3ZA[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province12, inProvinceTrafficSummaryTop3ZAPre1st, inProvinceTrafficSummaryTop3ZAPre2nd, secondInProvinceTrafficTop5AppCompanyZA, secondInProvinceTrafficTop5AppCompanyZAPre1st, secondInProvinceTrafficTop5AppCompanyZAPre2nd, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas12\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts13 () {\r\n var province13 = inProvinceTrafficSummaryTop3ZA[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province13, inProvinceTrafficSummaryTop3ZAPre1st, inProvinceTrafficSummaryTop3ZAPre2nd, thirdInProvinceTrafficTop5AppCompanyZA, thirdInProvinceTrafficTop5AppCompanyZAPre1st, thirdInProvinceTrafficTop5AppCompanyZAPre2nd, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.10 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n function initEcharts14 () {\r\n var province14 = inProvinceTrafficSummaryTop3AppZA[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province14, inProvinceTrafficSummaryTop3AppZAPre1st, inProvinceTrafficSummaryTop3AppZAPre2nd, firstInProvinceTrafficTop5RegionZA, firstInProvinceTrafficTop5RegionZAPre1st, firstInProvinceTrafficTop5RegionZAPre2nd, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts15 () {\r\n var province15 = inProvinceTrafficSummaryTop3AppZA[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province15, inProvinceTrafficSummaryTop3AppZAPre1st, inProvinceTrafficSummaryTop3AppZAPre2nd, secondInProvinceTrafficTop5RegionZA, secondInProvinceTrafficTop5RegionZAPre1st, secondInProvinceTrafficTop5RegionZAPre2nd, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas15\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts16 () {\r\n var province16 = inProvinceTrafficSummaryTop3AppZA[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province16, inProvinceTrafficSummaryTop3AppZAPre1st, inProvinceTrafficSummaryTop3AppZAPre2nd, thirdInProvinceTrafficTop5RegionZA, thirdInProvinceTrafficTop5RegionZAPre1st, thirdInProvinceTrafficTop5RegionZAPre2nd, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas16\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n // 5.1 Top3 IDC租用方流量、会话分布\r\n function initEcharts18 () {\r\n var categoryData18 = [\'获取内容的会话数\', \'提供服务的会话数\']\r\n var seriesData18 = []\r\n var bar1Object = IDCTrafficSessionTop3[0]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData18[0] = bar2Object ? (bar2Object.sessions || 0) : 0\r\n seriesData18[1] = bar1Object.sessions || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData18,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.number).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData18,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.number).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n textBorderColor: \'white\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts19 () {\r\n var categoryData19 = [\'获取内容的会话数\', \'提供服务的会话数\']\r\n var seriesData19 = []\r\n var bar1Object = IDCTrafficSessionTop3[1]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData19[0] = bar2Object ? (bar2Object.sessions || 0) : 0\r\n seriesData19[1] = bar1Object.sessions || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData19,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.number).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData19,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.number).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts20 () {\r\n var unit20 = \'KB\'\r\n var categoryData20 = [\'获取内容的会话数\', \'提供服务的会话数\']\r\n var seriesData20 = []\r\n var bar1Object = IDCTrafficSessionTop3[2]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData20[0] = bar2Object ? (bar2Object.sessions || 0) : 0\r\n seriesData20[1] = bar1Object.sessions || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas20\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData20,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.number).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData20,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.number).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n textBorderColor: \'white\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts21 () {\r\n var unit21 = \'KB\'\r\n var categoryData21 = [\'获取内容的会话总流量\', \'提供服务的会话总流量\']\r\n var seriesData21 = []\r\n var bar1Object = IDCTrafficSessionTop3[0]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData21[0] = bar2Object ? (bar2Object.bytes || 0) : 0\r\n seriesData21[1] = bar1Object.bytes || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas21\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData21,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, unit21).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData21,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, unit21).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts22 () {\r\n var unit22 = \'KB\'\r\n var categoryData22 = [\'获取内容的会话总流量\', \'提供服务的会话总流量\']\r\n var seriesData22 = []\r\n var bar1Object = IDCTrafficSessionTop3[1]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData22[0] = bar2Object ? (bar2Object.bytes || 0) : 0\r\n seriesData22[1] = bar1Object.bytes || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas22\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData22,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, unit22).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData22,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, unit22).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n textBorderColor: \'white\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts23 () {\r\n var unit23 = \'KB\'\r\n var categoryData23 = [\'获取内容的会话总流量\', \'提供服务的会话总流量\']\r\n var seriesData23 = []\r\n var bar1Object = IDCTrafficSessionTop3[2]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData23[0] = bar2Object ? (bar2Object.bytes || 0) : 0\r\n seriesData23[1] = bar1Object.bytes || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas23\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData23,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, unit23).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData23,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, unit23).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.3 IDC对外(省Z-A)提供服务TOP3省份的APP的流量占比\r\n function initEcharts24 () {\r\n var province24 = provinceTrafficSummaryTop3ZA[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province24, provinceTrafficSummaryTop3ZAPre1st, provinceTrafficSummaryTop3ZAPre2nd, firstProvinceTrafficTop5AppCompanyZA, firstProvinceTrafficTop5AppCompanyZAPre1st, firstProvinceTrafficTop5AppCompanyZAPre2nd, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas24\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts25 () {\r\n var province25 = provinceTrafficSummaryTop3ZA[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province25, provinceTrafficSummaryTop3ZAPre1st, provinceTrafficSummaryTop3ZAPre2nd, secondProvinceTrafficTop5AppCompanyZA, secondProvinceTrafficTop5AppCompanyZAPre1st, secondProvinceTrafficTop5AppCompanyZAPre2nd, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas25\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts26 () {\r\n var province26 = provinceTrafficSummaryTop3ZA[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province26, provinceTrafficSummaryTop3ZAPre1st, provinceTrafficSummaryTop3ZAPre2nd, thirdProvinceTrafficTop5AppCompanyZA, thirdProvinceTrafficTop5AppCompanyZAPre1st, thirdProvinceTrafficTop5AppCompanyZAPre2nd, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas26\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.4 IDC对外(省Z-A)提供服务TOP3 APP的省份流量占比\r\n function initEcharts27 () {\r\n var province27 = appTrafficSummaryTop3ZA[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province27, appTrafficSummaryTop3ZAPre1st, appTrafficSummaryTop3ZAPre2nd, firstAppTrafficTop5ProvinceZA, firstAppTrafficTop5ProvinceZAPre1st, firstAppTrafficTop5ProvinceZAPre2nd, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas27\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts28() {\r\n var province28 = appTrafficSummaryTop3ZA[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province28, appTrafficSummaryTop3ZAPre1st, appTrafficSummaryTop3ZAPre2nd, secondAppTrafficTop5ProvinceZA, secondAppTrafficTop5ProvinceZAPre1st, secondAppTrafficTop5ProvinceZAPre2nd, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas28\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts29 () {\r\n var province29 = appTrafficSummaryTop3ZA[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province29, appTrafficSummaryTop3ZAPre1st, appTrafficSummaryTop3ZAPre2nd, thirdAppTrafficTop5ProvinceZA, thirdAppTrafficTop5ProvinceZAPre1st, thirdAppTrafficTop5ProvinceZAPre2nd, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas29\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts6() } catch (e) { console.error(e) }\r\n try { initEcharts7() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts12() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts15() } catch (e) { console.error(e) }\r\n try { initEcharts16() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initEcharts20() } catch (e) { console.error(e) }\r\n try { initEcharts21() } catch (e) { console.error(e) }\r\n try { initEcharts22() } catch (e) { console.error(e) }\r\n try { initEcharts23() } catch (e) { console.error(e) }\r\n try { initEcharts24() } catch (e) { console.error(e) }\r\n try { initEcharts25() } catch (e) { console.error(e) }\r\n try { initEcharts26() } catch (e) { console.error(e) }\r\n try { initEcharts27() } catch (e) { console.error(e) }\r\n try { initEcharts28() } catch (e) { console.error(e) }\r\n try { initEcharts29() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummary\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRatePre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRatePre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryToIDC\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryToIDCPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryIDCTo\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryIDCToPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryToIDC\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryToIDCPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') \",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryIDCTo\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryIDCToPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRateTrend\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10Pre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10Pre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentAZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentAZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateAZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateAZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, SUM(sent_pkts + received_pkts) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentTop10AppCompany\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, SUM(sent_pkts + received_pkts) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentTop10AppCompanyPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateTop10AppCompany\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateTop10AppCompanyPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10AZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10AZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10AZPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10AZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10AZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10AZPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionZAPre2nd\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"thirdInProvinceTrafficTop5RegionZA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"thirdInProvinceTrafficTop5RegionZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10AZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10AZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10AZPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10AZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10AZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10AZPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, SUM(sent_bytes + received_bytes) AS bytes, server_ip_tags AS server_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_ip_tags) GROUP BY server_ip_tags ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"IDCTrafficSessionTop3\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, SUM(sent_bytes + received_bytes) AS bytes, client_ip_tags AS client_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND client_ip_tags IN ( SELECT server_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_ip_tags) GROUP BY server_ip_tags ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3) GROUP BY client_ip_tags ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"IDCWithoutTrafficSessionTop3\"\r\n }\r\n ]\r\n}\r\n\r\n\r\n', 1, '2022-06-21 14:59:02', 1, '2022-06-21 14:59:08', NULL); -INSERT INTO `report_category` VALUES (3, '出入口提供商报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>出入口服务提供商${Provider}监测报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">出入口服务提供商${Provider}监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 出入口${Provider}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 省外访问省内${Provider}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 省内访问省外的${Provider}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 省内访问省外${Provider}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 省内访问省外${Provider}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 省外访问省内${Provider}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 省外访问省内${Provider}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 省内访问省外${Provider}服务的Top 10 省内地区的请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 省内访问省外${Provider}服务的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省外访问省内${Provider}服务的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省外访问省内${Provider}服务的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n<div class=\"header2\">四.链路方向流量构成</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas42\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图12 省内访问省外${Provider}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas49\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas50\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas51\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas52\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas53\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas54\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange9\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange20\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange20\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图13 省内访问省外${Provider}各链路Top5 省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas55\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图14 省外访问省内${Provider}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas62\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas63\" ></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas64\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas65\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas \" id=\"canvas66\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas67\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange11\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange22\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange22\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图15 省外访问省内${Provider}各链路Top5 省份流量占比</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n // xxx服务总流量 (xxxService traffic total)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前一周期(Pre 1st xxxService traffic total)\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期(Pre 2st xxxService traffic total)\r\n var pre2ndxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 省外访问省内服${Provider}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${Provider}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${Provider}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${Provider}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量情况\r\n // 省外访问省内${Provider}服务的服务质量\r\n // TCP会话创建延迟(xxxService Out2in TCP)\r\n var xxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in TCP)\r\n var pre1stxxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService Out2in retrans packets)\r\n var xxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in retrans packets)\r\n var pre1stxxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 省内访问省外${Provider}的服务质量\r\n // TCP会话创建延迟(xxxService In2out TCP)\r\n var xxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out TCP)\r\n var pre1stxxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService In2out retrans packets)\r\n var xxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out retrans packets)\r\n var pre1stxxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${Provider}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${Provider}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${Provider}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${Provider}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${Provider}服务)\r\n var regionIn2outSentTrafficBytesTop10 = [\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${Provider}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIn2outReceivedTrafficBytesTop10 = [\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionAZReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionAZReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionAZReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${Provider}服务)\r\n var regionOut2inSentTrafficBytesTop10 = [\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${Provider}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionOut2inReceivedTrafficBytesTop10 = [\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1 ${Provider}服务省内访问省外\r\n var linkDirectionTrafficIn2Out = [\r\n <#if linkDirectionTrafficIn2Out??>\r\n <#list linkDirectionTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 各链路Top5指标流量占比\r\n // 上行链路总流量统计\r\n var linkEgressTrafficIn2Out = [\r\n <#if linkEgressTrafficIn2Out??>\r\n <#list linkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficIn2Out = [\r\n <#if pre1stLinkEgressTrafficIn2Out??>\r\n <#list pre1stLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficIn2Out = [\r\n <#if pre2ndLinkEgressTrafficIn2Out??>\r\n <#list pre2ndLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficIn2Out = [\r\n <#if linkIngressTrafficIn2Out??>\r\n <#list linkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficIn2Out = [\r\n <#if pre1stLinkIngressTrafficIn2Out??>\r\n <#list pre1stLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficIn2Out = [\r\n <#if pre2ndLinkIngressTrafficIn2Out??>\r\n <#list pre2ndLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 省外访问省内\r\n var linkDirectionTrafficOut2In = [\r\n <#if linkDirectionTrafficOut2In??>\r\n <#list linkDirectionTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n // 上行链路总流量统计\r\n // 各链路上行总流量-本周期\r\n var linkEgressTrafficOut2In = [\r\n <#if linkEgressTrafficOut2In??>\r\n <#list linkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficOut2In = [\r\n <#if pre1stLinkEgressTrafficOut2In??>\r\n <#list pre1stLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficOut2In = [\r\n <#if pre2ndLinkEgressTrafficOut2In??>\r\n <#list pre2ndLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficOut2In = [\r\n <#if linkIngressTrafficOut2In??>\r\n <#list linkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficOut2In = [\r\n <#if pre1stLinkIngressTrafficOut2In??>\r\n <#list pre1stLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficOut2In = [\r\n <#if pre2ndLinkIngressTrafficOut2In??>\r\n <#list pre2ndLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if linkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list linkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if linkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list linkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n \r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外字节跳动服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内字节跳动服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外字节跳动服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData4 = regionIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2outSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData10 = regionIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionAZReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内字节跳动服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData5 = regionOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData11 = regionOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n // 省内访问省外\r\n function initEcharts42 () {\r\n var Data42 = []\r\n var Links42 = []\r\n linkDirectionTrafficIn2Out.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data42.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links42 = linkDirectionTrafficIn2Out.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data42 = Array.from(new Set(Data42))\r\n Data42 = Data42.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas42\')\r\n sankeyOption.series[0].data = Data42\r\n sankeyOption.series[0].links = Links42\r\n myChart.setOption(sankeyOption)\r\n }\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts49 () {\r\n var province49 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province49, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXN, pre1stLinkEgressTrafficTopNProvinceIn2OutXN, pre2ndLinkEgressTrafficTopNProvinceIn2OutXN, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas49\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts50 () {\r\n var province50 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province50, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutTY, pre1stLinkEgressTrafficTopNProvinceIn2OutTY, pre2ndLinkEgressTrafficTopNProvinceIn2OutTY, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas50\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts51 () {\r\n var province51 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province51, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXA, pre1stLinkEgressTrafficTopNProvinceIn2OutXA, pre2ndLinkEgressTrafficTopNProvinceIn2OutXA, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas51\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts52 () {\r\n var province52 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province52, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXN, pre1stLinkIngressTrafficTopNProvinceIn2OutXN, pre2ndLinkIngressTrafficTopNProvinceIn2OutXN, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n\r\n var myChart = initEchartsInstance(\'canvas52\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts53 () {\r\n var province53 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province53, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutTY, pre1stLinkIngressTrafficTopNProvinceIn2OutTY, pre2ndLinkIngressTrafficTopNProvinceIn2OutTY, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas53\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts54 () {\r\n var province54 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province54, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXA, pre1stLinkIngressTrafficTopNProvinceIn2OutXA, pre2ndLinkIngressTrafficTopNProvinceIn2OutXA, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas54\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 省外访问省内\r\n function initEcharts55 () {\r\n var Data55 = []\r\n var Links55 = []\r\n linkDirectionTrafficOut2In.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data55.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links55 = linkDirectionTrafficOut2In.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data55 = Array.from(new Set(Data55))\r\n Data55 = Data55.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas55\')\r\n sankeyOption.series[0].data = Data55\r\n sankeyOption.series[0].links = Links55\r\n myChart.setOption(sankeyOption)\r\n }\r\n\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts62 () {\r\n var province62 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province62, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXN, pre1stLinkEgressTrafficTopNProvinceOut2InXN, pre2ndLinkEgressTrafficTopNProvinceOut2InXN, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas62\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts63 () {\r\n var province63 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province63, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InTY, pre1stLinkEgressTrafficTopNProvinceOut2InTY, pre2ndLinkEgressTrafficTopNProvinceOut2InTY, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas63\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts64 () {\r\n var province64 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province64, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXA, pre1stLinkEgressTrafficTopNProvinceOut2InXA, pre2ndLinkEgressTrafficTopNProvinceOut2InXA, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas64\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts65 () {\r\n var province65 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province65, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXN, pre1stLinkIngressTrafficTopNProvinceOut2InXN, pre2ndLinkIngressTrafficTopNProvinceOut2InXN, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas65\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts66 () {\r\n var province66 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province66, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InTY, pre1stLinkIngressTrafficTopNProvinceOut2InTY, pre2ndLinkIngressTrafficTopNProvinceOut2InTY, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas66\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts67 () {\r\n var province67 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province67, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXA, pre1stLinkIngressTrafficTopNProvinceOut2InXA, pre2ndLinkIngressTrafficTopNProvinceOut2InXA, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas67\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts42() } catch (e) { console.error(e) }\r\n try { initEcharts49() } catch (e) { console.error(e) }\r\n try { initEcharts50() } catch (e) { console.error(e) }\r\n try { initEcharts51() } catch (e) { console.error(e) }\r\n try { initEcharts52() } catch (e) { console.error(e) }\r\n try { initEcharts53() } catch (e) { console.error(e) }\r\n try { initEcharts54() } catch (e) { console.error(e) }\r\n try { initEcharts55() } catch (e) { console.error(e) }\r\n try { initEcharts62() } catch (e) { console.error(e) }\r\n try { initEcharts63() } catch (e) { console.error(e) }\r\n try { initEcharts64() } catch (e) { console.error(e) }\r\n try { initEcharts65() } catch (e) { console.error(e) }\r\n try { initEcharts66() } catch (e) { console.error(e) }\r\n try { initEcharts67() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"Provider\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.provider\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app_company IN (\'${Provider}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app_company IN (\'${Provider}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app_company IN (\'${Provider}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app_company IN (\'${Provider}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(received_bytes) AS ingress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(received_bytes) AS egress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXA\"\r\n }\r\n ]\r\n}', 1, '2022-06-29 17:26:04', 1, '2022-06-29 17:26:08', NULL); -INSERT INTO `report_category` VALUES (4, '出入口网络质量报告', '<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<#setting number_format=\"0.####\"/>\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <title>出入口整体流量监测报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">出入口整体流量监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n </div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficRate,0,\'rate_avg\',\'number\'),getFromArr(trafficRatePre1st,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficRatePre1st,0,\'rate_avg\',\'number\'),getFromArr(trafficRatePre2nd,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficSummary,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficSummary,0,\'bytes\',\'number\'),getFromArr(trafficSummaryPre1st,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficSummaryPre1st,0,\'bytes\',\'number\'),getFromArr(trafficSummaryPre2nd,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务流量排名</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">APP流量速率</th>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图2 TOP10 APP流量情况</div>\r\n</div>\r\n\r\n<div class=\"header2\">三.服务质量概况</div>\r\n<div class=\"header3\">1.整体质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 省外访问省内的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_avg\',\'number\'),getFromArr(TCPConnectionEstablishmentOut2InPre1st,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(packetRetransRateOut2InPre1st,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 省内访问省外的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_avg\',\'number\'),getFromArr(TCPConnectionEstablishmentIn2OutPre1st,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(packetRetransRateIn2OutPre1st,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"header3\">2.业务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表4 TOP10 APP服务质量情况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th rowspan=\"2\" class=\"table__th\">APP</th>\r\n <th rowspan=\"2\" class=\"table__th\">流量占比</th>\r\n <th colspan=\"3\" class=\"table__th\">TCP会话延迟(ms)</th>\r\n <th colspan=\"3\" class=\"table__th\">重传率</th>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">${getFromObj(val,\'app_company\',\'string\')}</td>\r\n <td class=\"table__td\">${proportion(getFromObj(val,\'bytes\',\'number\'),getFromArr(trafficSummary,0,\'bytes\',\'number\'))}</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(TCPConnectionEstablishmentTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany)][\'establish_latency_p50\'])}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(TCPConnectionEstablishmentTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany)][\'establish_latency_p90\'])}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(TCPConnectionEstablishmentTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany)][\'establish_latency_p99\'])}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(TCPConnectionEstablishmentTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany)][\'establish_latency_avg\'])}\r\n </td>\r\n <td class=\"table__td\">\r\n ${getChainRatio(val[\'app_company\'],\"app_company\",\"establish_latency_avg\",TCPConnectionEstablishmentTop10AppCompany,TCPConnectionEstablishmentTop10AppCompanyPre1st)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${(packetRetransRateTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany)][\'pkt_retrans_percent_p50\'] * 100)?string(\"#.##\")}%</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${(packetRetransRateTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany)][\'pkt_retrans_percent_p90\'] * 100)?string(\"#.##\")}%</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${(packetRetransRateTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany)][\'pkt_retrans_percent_p99\'] * 100)?string(\"#.##\")}%</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <#if packetRetransRateTop10AppCompany?? && findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany) != -1>\r\n ${(packetRetransRateTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany)][\'pkt_retrans_percent_avg\'] * 100)?string(\"#.##\")}%\r\n <#else>\r\n —\r\n </#if>\r\n </td>\r\n <td class=\"table__td\">\r\n <#if packetRetransRateTop10AppCompany?? && packetRetransRateTop10AppCompanyPre1st?? && findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany) != -1 && findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompanyPre1st) != -1\r\n && packetRetransRateTop10AppCompanyPre1st[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompanyPre1st)][\'pkt_retrans_percent_avg\'] !=0 >\r\n ${((packetRetransRateTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany)][\'pkt_retrans_percent_avg\'] - packetRetransRateTop10AppCompanyPre1st[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompanyPre1st)][\'pkt_retrans_percent_avg\']) / packetRetransRateTop10AppCompanyPre1st[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompanyPre1st)][\'pkt_retrans_percent_avg\'] * 100)?string(\"#.##\")}%\r\n <#else>\r\n —\r\n </#if>\r\n </td>\r\n </tr>\r\n </#list>\r\n </#if>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">四.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceSentTrafficSummaryTop10In2Out??>\r\n <#list provinceSentTrafficSummaryTop10In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceSentTrafficSummaryTop10In2Out??>\r\n <#list provinceSentTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceSentTrafficSummaryTop10In2Out??>\r\n <#list provinceSentTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图3 省内访问省外的TOP10省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list provinceReceivedTrafficSummaryTop10In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list provinceReceivedTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list provinceReceivedTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 省内访问省外的Top10省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if provinceTrafficSummaryTop3In2Out??>\r\n <#list provinceTrafficSummaryTop3In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas24\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas25\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas26\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange0\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange1\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange1\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图5 省内访问省外的TOP3省份的APP流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if appTrafficSummaryTop3In2Out??>\r\n <#list appTrafficSummaryTop3In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas27\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas28\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas29\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange1\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange2\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange2\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图6 省内访问省外的TOP3 APP的各省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceSentTrafficSummaryTop10Out2In??>\r\n <#list provinceSentTrafficSummaryTop10Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceSentTrafficSummaryTop10Out2In??>\r\n <#list provinceSentTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceSentTrafficSummaryTop10Out2In??>\r\n <#list provinceSentTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 省外访问省内的TOP10省份的请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas6\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 省外访问省内的TOP10省份的响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if provinceTrafficSummaryTop3Out2In??>\r\n <#list provinceTrafficSummaryTop3Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas30\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas31\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas32\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange2\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange9\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange9\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图9 省外访问省内的TOP3省份的APP流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if appTrafficSummaryTop3Out2In??>\r\n <#list appTrafficSummaryTop3Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas33\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas34\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas35\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange3\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange10\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange10\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图10 省外访问省内的TOP3 APP的各省份流量占比</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas7\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceSentTrafficSummaryTop10In2Out??>\r\n <#list inProvinceSentTrafficSummaryTop10In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceSentTrafficSummaryTop10In2Out??>\r\n <#list inProvinceSentTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceSentTrafficSummaryTop10In2Out??>\r\n <#list inProvinceSentTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问省外的TOP10省内地区的请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 省内访问省外的TOP10省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3In2Out??>\r\n <#list inProvinceTrafficSummaryTop3In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas11\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas12\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas13\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange4\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange3\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange3\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图13 省内访问省外的TOP3省内地区的APP流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3AppIn2Out??>\r\n <#list inProvinceTrafficSummaryTop3AppIn2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas14\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas15\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas16\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange5\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange4\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange4\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图14 省内访问省外的TOP3 APP的省内地区流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceSentTrafficSummaryTop10Out2In??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceSentTrafficSummaryTop10Out2In??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceSentTrafficSummaryTop10Out2In??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图15 省外访问省内的TOP10省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图16 省外访问省内的TOP10省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3Out2In??>\r\n <#list inProvinceTrafficSummaryTop3Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas36\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas37\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas38\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange6\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange17\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange17\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图17 省外访问省内的TOP3省内地区的APP流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3AppOut2In??>\r\n <#list inProvinceTrafficSummaryTop3AppOut2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas39\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas40\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas41\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange7\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange18\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange18\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图18 省外访问省内的TOP3 APP的省内地区流量占比</div>\r\n<div class=\"header2\">五.链路方向流量构成</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas42\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图19 省内访问省外会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas43\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas44\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas45\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas46\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas47\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas48\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange8\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange19\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange19\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图20 省内访问省外各链路Top5 APP流量占比</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas49\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas50\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas51\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas52\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas53\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas54\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange9\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange20\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange20\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图21 省内访问省外各链路Top5 省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas55\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图22 省外访问省内会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas56\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas57\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas58\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas59\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas60\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas61\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange10\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange21\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange21\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图23 省外访问省内各链路Top5 APP流量占比</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas62\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas63\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas64\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas65\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas66\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas67\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange11\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange22\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange22\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图24 省外访问省内各链路Top5 省份流量占比</div>\r\n\r\n<script>\r\n /** 数据 start */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n var timeZoneOffset = ${timeZoneOffset}\r\n // 1.1.1 总流量\r\n var trafficSummary = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummary,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummary,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummary,0,\'bytes\')/1024},\r\n sessions:${jsGetNumFromArr(trafficSummary,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.2 前一周期总流量\r\n var trafficSummaryPre1st = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes\')/1024},\r\n sessions:${jsGetNumFromArr(trafficSummaryPre1st,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.3 前两周期总流量\r\n var trafficSummaryPre2nd = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes\')/1024},\r\n sessions:${jsGetNumFromArr(trafficSummaryPre2nd,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.4 流量速率\r\n var trafficRate = {\r\n rate50:${jsGetNumFromArr(trafficRate,0,\'rate50\')/1000},\r\n rate90:${jsGetNumFromArr(trafficRate,0,\'rate90\')/1000},\r\n rate99:${jsGetNumFromArr(trafficRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRate,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.5 前一周期流量速率\r\n var trafficRatePre1st = {\r\n rate50:${jsGetNumFromArr(trafficRatePre1st,0,\'rate50\')/1000},\r\n rate90:${jsGetNumFromArr(trafficRatePre1st,0,\'rate90\')/1000},\r\n rate99:${jsGetNumFromArr(trafficRatePre1st,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.6 前两周期流量速率\r\n var trafficRatePre2nd = {\r\n rate50:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate50\')/1000},\r\n rate90:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate90\')/1000},\r\n rate99:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.7 域外访问域内总流量\r\n var trafficSummaryOut2In = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryOut2In,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryOut2In,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryOut2In,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.8 前一周期域外访问域内总流量\r\n var trafficSummaryOut2InPre1st = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryOut2InPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryOut2InPre1st,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryOut2InPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.9 域内访问域外总流量\r\n var trafficSummaryIn2Out = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryIn2Out,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryIn2Out,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryIn2Out,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.10 前一周期域内访问域外总流量\r\n var trafficSummaryIn2OutPre1st = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryIn2OutPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryIn2OutPre1st,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryIn2OutPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n\r\n // 1. 整体流量\r\n // 1.2.1 流量变化曲线\r\n var trafficRateTrend = [\r\n <#if trafficRateTrend??>\r\n <#list trafficRateTrend as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000}, rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 流量速率\r\n var quantile1 = {\r\n rate50: ${jsGetNumFromArr(trafficRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(trafficRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(trafficRate,0,\'rate99\')/1000},\r\n }\r\n\r\n // 2. 业务流量\r\n // 2.1.1 Top 10 App流量概况\r\n var appCompanyTrafficTop10 = [\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.2 前一周期Top 10 App Company Traffic\r\n var appCompanyTrafficTop10Pre1st = [\r\n <#if appCompanyTrafficTop10Pre1st??>\r\n <#list appCompanyTrafficTop10Pre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3 前两周期Top 10 App Company Traffic\r\n var appCompanyTrafficTop10Pre2nd = [\r\n <#if appCompanyTrafficTop10Pre2nd??>\r\n <#list appCompanyTrafficTop10Pre2nd as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4. 地理位置分布\r\n //4.1 IDC对外(省Z-A)服务能力Top10省份请求流量分布\r\n\r\n // 4.1.1 Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10In2Out = [\r\n <#if provinceSentTrafficSummaryTop10In2Out??>\r\n <#list provinceSentTrafficSummaryTop10In2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.2 前一周期Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10In2OutPre1st= [\r\n <#if provinceSentTrafficSummaryTop10In2OutPre1st??>\r\n <#list provinceSentTrafficSummaryTop10In2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.3 前两周期Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10In2OutPre2nd = [\r\n <#if provinceSentTrafficSummaryTop10In2OutPre2nd??>\r\n <#list provinceSentTrafficSummaryTop10In2OutPre2nd as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 IDC对外(省Z-A)服务能力Top10省份响应流量分布\r\n // 4.2.1 Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10In2Out = [\r\n <#if provinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list provinceReceivedTrafficSummaryTop10In2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n // 4.2.2 前一周期Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10In2OutPre1st= [\r\n <#if provinceReceivedTrafficSummaryTop10In2OutPre1st??>\r\n <#list provinceReceivedTrafficSummaryTop10In2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2.3 前两周期Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10In2OutPre2nd = [\r\n <#if provinceReceivedTrafficSummaryTop10In2OutPre2nd??>\r\n <#list provinceReceivedTrafficSummaryTop10In2OutPre2nd as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3 IDC对外(省Z-A)提供服务TOP3省份的APP的流量占比\r\n // 4.3.1 Top3省份\r\n var provinceTrafficSummaryTop3In2Out = [\r\n <#if provinceTrafficSummaryTop3In2Out??>\r\n <#list provinceTrafficSummaryTop3In2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.2 前一周期Top3省份\r\n var provinceTrafficSummaryTop3In2OutPre1st = [\r\n <#if provinceTrafficSummaryTop3In2OutPre1st??>\r\n <#list provinceTrafficSummaryTop3In2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.3 前两周期Top3省份\r\n var provinceTrafficSummaryTop3In2OutPre2st = [\r\n <#if provinceTrafficSummaryTop3In2OutPre2st??>\r\n <#list provinceTrafficSummaryTop3In2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.4 1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyIn2Out = [\r\n <#if firstProvinceTrafficTop5AppCompanyIn2Out??>\r\n <#list firstProvinceTrafficTop5AppCompanyIn2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.5 前一周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if firstProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list firstProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.6 前两周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyZAPre2st = [\r\n <#if firstProvinceTrafficTop5AppCompanyZAPre2st??>\r\n <#list firstProvinceTrafficTop5AppCompanyZAPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.7 2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCIn2Outomapnty = [\r\n <#if secondProvinceTrafficTop5AppCIn2Outomapnty??>\r\n <#list secondProvinceTrafficTop5AppCIn2Outomapnty as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.8 前一周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if secondProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list secondProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.9 前两周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyIn2OutPre2st = [\r\n <#if secondProvinceTrafficTop5AppCompanyIn2OutPre2st??>\r\n <#list secondProvinceTrafficTop5AppCompanyIn2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.10 3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyIn2Out = [\r\n <#if thirdProvinceTrafficTop5AppCompanyIn2Out??>\r\n <#list thirdProvinceTrafficTop5AppCompanyIn2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.11 前一周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if thirdProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list thirdProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.12 前两周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyIn2OutPre2st = [\r\n <#if thirdProvinceTrafficTop5AppCompanyIn2OutPre2st??>\r\n <#list thirdProvinceTrafficTop5AppCompanyIn2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4 IDC对外(省Z-A)提供服务TOP3 APP的省份流量占比\r\n // 4.4.1 Top3 App\r\n var appTrafficSummaryTop3In2Out = [\r\n <#if appTrafficSummaryTop3In2Out??>\r\n <#list appTrafficSummaryTop3In2Out as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/ 1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n // 4.4.2 前一周期Top3 App\r\n var appTrafficSummaryTop3In2OutPre1st = [\r\n <#if appTrafficSummaryTop3In2OutPre1st??>\r\n <#list appTrafficSummaryTop3In2OutPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/ 1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.3 前两周期Top3 App\r\n var appTrafficSummaryTop3In2OutPre2st = [\r\n <#if appTrafficSummaryTop3In2OutPre2st??>\r\n <#list appTrafficSummaryTop3In2OutPre2st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/ 1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.4 1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceIn2Out = [\r\n <#if firstAppTrafficTop5ProvinceIn2Out??>\r\n <#list firstAppTrafficTop5ProvinceIn2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n // 4.4.5 前一周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceIn2OutPre1st = [\r\n <#if firstAppTrafficTop5ProvinceIn2OutPre1st??>\r\n <#list firstAppTrafficTop5ProvinceIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.6 前两周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceIn2OutPre2st = [\r\n <#if firstAppTrafficTop5ProvinceIn2OutPre2st??>\r\n <#list firstAppTrafficTop5ProvinceIn2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.7 2nd App Top5 Province\r\n var secondeAppTrafficTop5ProvinceIn2Out = [\r\n <#if secondeAppTrafficTop5ProvinceIn2Out??>\r\n <#list secondeAppTrafficTop5ProvinceIn2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.8 前一周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceIn2OutPre1st = [\r\n <#if secondAppTrafficTop5ProvinceIn2OutPre1st??>\r\n <#list secondAppTrafficTop5ProvinceIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.9 前两周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceIn2OutPre2st = [\r\n <#if secondAppTrafficTop5ProvinceIn2OutPre2st??>\r\n <#list secondAppTrafficTop5ProvinceIn2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.10 3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceIn2Out = [\r\n <#if thirdAppTrafficTop5ProvinceIn2Out??>\r\n <#list thirdAppTrafficTop5ProvinceIn2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n\r\n // 4.4.11 前一周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceIn2OutPre1st = [\r\n <#if thirdAppTrafficTop5ProvinceIn2OutPre1st??>\r\n <#list thirdAppTrafficTop5ProvinceIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.12 前两周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceIn2OutPre2st = [\r\n <#if thirdAppTrafficTop5ProvinceIn2OutPre2st??>\r\n <#list thirdAppTrafficTop5ProvinceIn2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5 IDC内容获取(省A-Z)服务能力的Top10省份请求流量分布\r\n // 4.5.1 top10省份请求流量\r\n var provinceSentTrafficSummaryTop10Out2In = [\r\n <#if provinceSentTrafficSummaryTop10Out2In??>\r\n <#list provinceSentTrafficSummaryTop10Out2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5.2 前一周期top10省份请求流量\r\n var provinceSentTrafficSummaryTop10Out2InPre1st= [\r\n <#if provinceSentTrafficSummaryTop10Out2InPre1st??>\r\n <#list provinceSentTrafficSummaryTop10Out2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5.3 前两周期top10省份请求流量\r\n var provinceSentTrafficSummaryTop10Out2InPre2nd = [\r\n <#if provinceSentTrafficSummaryTop10Out2InPre2nd??>\r\n <#list provinceSentTrafficSummaryTop10Out2InPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6 IDC内容获取(省A-Z)服务能力的Top10省份响应流量分布\r\n // 4.6.1 top10省份响应流量\r\n var provinceReceivedTrafficSummaryTop10Out2In = [\r\n <#if provinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6.2 前一周期top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10Out2InPre1st= [\r\n <#if provinceReceivedTrafficSummaryTop10Out2InPre1st??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6.3 前两周期top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10Out2InPre2nd = [\r\n <#if provinceReceivedTrafficSummaryTop10Out2InPre2nd??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2InPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7 IDC对内(地市Z- A)服务能力的Top10省内地区请求流量分布\r\n // 4.7.1 top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10In2Out = [\r\n <#if inProvinceSentTrafficSummaryTop10In2Out??>\r\n <#list inProvinceSentTrafficSummaryTop10In2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7.2 前一周期top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10In2OutPre1st = [\r\n <#if inProvinceSentTrafficSummaryTop10In2OutPre1st??>\r\n <#list inProvinceSentTrafficSummaryTop10In2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7.3 前两周期top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10In2OutPre2nd = [\r\n <#if inProvinceSentTrafficSummaryTop10In2OutPre2nd??>\r\n <#list inProvinceSentTrafficSummaryTop10In2OutPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8 IDC对内(地市Z-A)服务能力的Top10省份响应流量分布\r\n // 4.8.1 top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10In2Out = [\r\n <#if inProvinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8.2 前一周期top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10In2OutPre1st = [\r\n <#if inProvinceReceivedTrafficSummaryTop10In2OutPre1st??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8.3 前两周期top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10In2OutPre2nd = [\r\n <#if inProvinceReceivedTrafficSummaryTop10In2OutPre2nd??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2OutPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n // 4.9.1 IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3In2Out = [\r\n <#if inProvinceTrafficSummaryTop3In2Out??>\r\n <#list inProvinceTrafficSummaryTop3In2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.2 前一周期IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3In2OutPre1st = [\r\n <#if inProvinceTrafficSummaryTop3In2OutPre1st??>\r\n <#list inProvinceTrafficSummaryTop3In2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.3 前两周期IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3In2OutPre2st = [\r\n <#if inProvinceTrafficSummaryTop3In2OutPre2st??>\r\n <#list inProvinceTrafficSummaryTop3In2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.4 1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyIn2Out = [\r\n <#if firstInProvinceTrafficTop5AppCompanyIn2Out??>\r\n <#list firstInProvinceTrafficTop5AppCompanyIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n // 4.9.5 前一周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if firstInProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list firstInProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.6 前两周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyIn2OutPre2st = [\r\n <#if firstInProvinceTrafficTop5AppCompanyIn2OutPre2st??>\r\n <#list firstInProvinceTrafficTop5AppCompanyIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.7 2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyIn2Out = [\r\n <#if secondInProvinceTrafficTop5AppCompanyIn2Out??>\r\n <#list secondInProvinceTrafficTop5AppCompanyIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.8 前一周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if secondInProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list secondInProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.9 前两周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyIn2OutPre2st = [\r\n <#if secondInProvinceTrafficTop5AppCompanyIn2OutPre2st??>\r\n <#list secondInProvinceTrafficTop5AppCompanyIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.10 3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyIn2Out = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyIn2Out??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.11 前一周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.12 前两周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyIn2OutPre2st = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyIn2OutPre2st??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n // 4.10.1 IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppIn2Out = [\r\n <#if inProvinceTrafficSummaryTop3AppIn2Out??>\r\n <#list inProvinceTrafficSummaryTop3AppIn2Out as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.2 前一周期IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppIn2OutPre1st = [\r\n <#if inProvinceTrafficSummaryTop3AppIn2OutPre1st??>\r\n <#list inProvinceTrafficSummaryTop3AppIn2OutPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.3 前两周期IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppIn2OutPre2st = [\r\n <#if inProvinceTrafficSummaryTop3AppIn2OutPre2st??>\r\n <#list inProvinceTrafficSummaryTop3AppIn2OutPre2st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.4 1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionIn2Out = [\r\n <#if firstInProvinceTrafficTop5RegionIn2Out??>\r\n <#list firstInProvinceTrafficTop5RegionIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.5 前一周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionIn2OutPre1st = [\r\n <#if firstInProvinceTrafficTop5RegionIn2OutPre1st??>\r\n <#list firstInProvinceTrafficTop5RegionIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.6 前两周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionIn2OutPre2st = [\r\n <#if firstInProvinceTrafficTop5RegionIn2OutPre2st??>\r\n <#list firstInProvinceTrafficTop5RegionIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.7 2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionIn2Out = [\r\n <#if secondInProvinceTrafficTop5RegionIn2Out??>\r\n <#list secondInProvinceTrafficTop5RegionIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.8 前一周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionIn2OutPre1st = [\r\n <#if secondInProvinceTrafficTop5RegionIn2OutPre1st??>\r\n <#list secondInProvinceTrafficTop5RegionIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.9 前两周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionIn2OutPre2st = [\r\n <#if secondInProvinceTrafficTop5RegionIn2OutPre2st??>\r\n <#list secondInProvinceTrafficTop5RegionIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.10 3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionIn2Out = [\r\n <#if thirdInProvinceTrafficTop5RegionIn2Out??>\r\n <#list thirdInProvinceTrafficTop5RegionIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.11 前一周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionIn2OutPre1st = [\r\n <#if thirdInProvinceTrafficTop5RegionIn2OutPre1st??>\r\n <#list thirdInProvinceTrafficTop5RegionIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.12 前两周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionIn2OutPre2st = [\r\n <#if thirdInProvinceTrafficTop5RegionIn2OutPre2st??>\r\n <#list thirdInProvinceTrafficTop5RegionIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.11 IDC内容获取(地市A-Z)服务能力的Top10省内地区请求流量分布\r\n // 4.11.1 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10Out2In = [\r\n <#if inProvinceSentTrafficSummaryTop10Out2In??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.11.2 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10Out2InPre1st = [\r\n <#if inProvinceSentTrafficSummaryTop10Out2InPre1st??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.11.3 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10Out2InPre2nd = [\r\n <#if inProvinceSentTrafficSummaryTop10Out2InPre2nd??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2InPre2nd as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12 IDC内容获取(地市A-Z)服务能力的Top10省内地区响应流量分布\r\n // 4.12.1 Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10Out2In = [\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12.2 前一周期Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10Out2InPre1st = [\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2InPre1st??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12.3 前两周期Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10Out2InPre2nd = [\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2InPre2nd??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2InPre2nd as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13 省外访问省内的TOP3省份的APP流量占比\r\n // 4.13.1 Top3省份\r\n var provinceTrafficSummaryTop3Out2In = [\r\n <#if provinceTrafficSummaryTop3Out2In??>\r\n <#list provinceTrafficSummaryTop3Out2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.2 前一周期Top3省份\r\n var provinceTrafficSummaryTop3Out2InPre1st = [\r\n <#if provinceTrafficSummaryTop3Out2InPre1st??>\r\n <#list provinceTrafficSummaryTop3Out2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.3 前两周期Top3省份\r\n var provinceTrafficSummaryTop3Out2InPre2st = [\r\n <#if provinceTrafficSummaryTop3Out2InPre2st??>\r\n <#list provinceTrafficSummaryTop3Out2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.4 1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if firstProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list firstProvinceTrafficTop5AppCompanyOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.5 前一周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if firstProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list firstProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.6 前两周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if firstProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list firstProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.7 2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if secondProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list secondProvinceTrafficTop5AppCompanyOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.8 前一周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if secondProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list secondProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.9 前两周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if secondProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list secondProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.10 3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if thirdProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list thirdProvinceTrafficTop5AppCompanyOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.11 前一周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if thirdProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list thirdProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.12 前两周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if thirdProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list thirdProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14 省外访问省内的TOP3APP的省份流量占比\r\n // 4.14.1 Top3 App\r\n var appTrafficSummaryTop3Out2In = [\r\n <#if appTrafficSummaryTop3Out2In??>\r\n <#list appTrafficSummaryTop3Out2In as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.2 前一周期Top3 App\r\n var appTrafficSummaryTop3Out2InPre1st = [\r\n <#if appTrafficSummaryTop3Out2InPre1st??>\r\n <#list appTrafficSummaryTop3Out2InPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.3 前两周期Top3 App\r\n var appTrafficSummaryTop3Out2InPre2st = [\r\n <#if appTrafficSummaryTop3Out2InPre2st??>\r\n <#list appTrafficSummaryTop3Out2InPre2st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.4 1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceOut2In = [\r\n <#if firstAppTrafficTop5ProvinceOut2In??>\r\n <#list firstAppTrafficTop5ProvinceOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.5 前一周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceOut2InPre1st = [\r\n <#if firstAppTrafficTop5ProvinceOut2InPre1st??>\r\n <#list firstAppTrafficTop5ProvinceOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.6 前两周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceOut2InPre2st = [\r\n <#if firstAppTrafficTop5ProvinceOut2InPre2st??>\r\n <#list firstAppTrafficTop5ProvinceOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.7 2nd App Top5 Province\r\n var secondeAppTrafficTop5ProvinceOut2In = [\r\n <#if secondeAppTrafficTop5ProvinceOut2In??>\r\n <#list secondeAppTrafficTop5ProvinceOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.8 前一周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceOut2InPre1st = [\r\n <#if secondAppTrafficTop5ProvinceOut2InPre1st??>\r\n <#list secondAppTrafficTop5ProvinceOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.9 前两周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceOut2InPre2st = [\r\n <#if secondAppTrafficTop5ProvinceOut2InPre2st??>\r\n <#list secondAppTrafficTop5ProvinceOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.10 3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceOut2In = [\r\n <#if thirdAppTrafficTop5ProvinceOut2In??>\r\n <#list thirdAppTrafficTop5ProvinceOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.11 前一周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceOut2InPre1st = [\r\n <#if thirdAppTrafficTop5ProvinceOut2InPre1st??>\r\n <#list thirdAppTrafficTop5ProvinceOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.12 前两周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceOut2InPre2st = [\r\n <#if thirdAppTrafficTop5ProvinceOut2InPre2st??>\r\n <#list thirdAppTrafficTop5ProvinceOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15 省外访问省内的TOP3省内地区的APP流量占比\r\n // 4.15.1 IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3Out2In = [\r\n <#if inProvinceTrafficSummaryTop3Out2In??>\r\n <#list inProvinceTrafficSummaryTop3Out2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.2 前一周期IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3Out2InPre1st = [\r\n <#if inProvinceTrafficSummaryTop3Out2InPre1st??>\r\n <#list inProvinceTrafficSummaryTop3Out2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.3 前两周期省外访问省内对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3Out2InPre2st = [\r\n <#if inProvinceTrafficSummaryTop3Out2InPre2st??>\r\n <#list inProvinceTrafficSummaryTop3Out2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.4 1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if firstInProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list firstInProvinceTrafficTop5AppCompanyOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.5 前一周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if firstInProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list firstInProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.6 前两周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if firstInProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list firstInProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.7 2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if secondInProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list secondInProvinceTrafficTop5AppCompanyOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.8 前一周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if secondInProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list secondInProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.9 前两周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if secondInProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list secondInProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.10 3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.11 前一周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.12 前两周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16 省外访问省内的TOP3APP的省内地区流量占比\r\n // 4.16.1 IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppOut2In = [\r\n <#if inProvinceTrafficSummaryTop3AppOut2In??>\r\n <#list inProvinceTrafficSummaryTop3AppOut2In as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.2 前一周期IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppOut2InPre1st = [\r\n <#if inProvinceTrafficSummaryTop3AppOut2InPre1st??>\r\n <#list inProvinceTrafficSummaryTop3AppOut2InPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.3 前两周期省外访问省内对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppOut2InPre2st = [\r\n <#if inProvinceTrafficSummaryTop3AppOut2InPre2st??>\r\n <#list inProvinceTrafficSummaryTop3AppOut2InPre2st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.4 1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionOut2In = [\r\n <#if firstInProvinceTrafficTop5RegionOut2In??>\r\n <#list firstInProvinceTrafficTop5RegionOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.5 前一周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionOut2InPre1st = [\r\n <#if firstInProvinceTrafficTop5RegionOut2InPre1st??>\r\n <#list firstInProvinceTrafficTop5RegionOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.6 前两周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionOut2InPre2st = [\r\n <#if firstInProvinceTrafficTop5RegionOut2InPre2st??>\r\n <#list firstInProvinceTrafficTop5RegionOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.7 2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionOut2In = [\r\n <#if secondInProvinceTrafficTop5RegionOut2In??>\r\n <#list secondInProvinceTrafficTop5RegionOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.8 前一周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionOut2InPre1st = [\r\n <#if secondInProvinceTrafficTop5RegionOut2InPre1st??>\r\n <#list secondInProvinceTrafficTop5RegionOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.9 前两周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionOut2InPre2st = [\r\n <#if secondInProvinceTrafficTop5RegionOut2InPre2st??>\r\n <#list secondInProvinceTrafficTop5RegionOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.10 3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionOut2In = [\r\n <#if thirdInProvinceTrafficTop5RegionOut2In??>\r\n <#list thirdInProvinceTrafficTop5RegionOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.11 前一周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionOut2InPre1st = [\r\n <#if thirdInProvinceTrafficTop5RegionOut2InPre1st??>\r\n <#list thirdInProvinceTrafficTop5RegionOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.12 前两周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionOut2InPre2st = [\r\n <#if thirdInProvinceTrafficTop5RegionOut2InPre2st??>\r\n <#list thirdInProvinceTrafficTop5RegionOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1 绘画流量流向图\r\n // 1.1 省内访问省外\r\n // 1.1.1 会话流量流向图\r\n var linkDirectionTrafficIn2Out = [\r\n <#if linkDirectionTrafficIn2Out??>\r\n <#list linkDirectionTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 省外访问省内\r\n // 1.2.1 会话流量流向图\r\n var linkDirectionTrafficOut2In = [\r\n <#if linkDirectionTrafficOut2In??>\r\n <#list linkDirectionTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2 各链路Top5指标流量占比\r\n // 2.1.1 上行链路总流量统计\r\n // 2.1.1.1 各链路上行总流量-本周期\r\n var linkEgressTrafficIn2Out = [\r\n <#if linkEgressTrafficIn2Out??>\r\n <#list linkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.1.2 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficIn2Out = [\r\n <#if pre1stLinkEgressTrafficIn2Out??>\r\n <#list pre1stLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.1.3 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficIn2Out = [\r\n <#if pre2ndLinkEgressTrafficIn2Out??>\r\n <#list pre2ndLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.2 下行链路总流量统计\r\n // 2.1.2.1 各链路下行总流量-本周期\r\n var linkIngressTrafficIn2Out = [\r\n <#if linkIngressTrafficIn2Out??>\r\n <#list linkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.2.2 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficIn2Out = [\r\n <#if pre1stLinkIngressTrafficIn2Out??>\r\n <#list pre1stLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.2.3 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficIn2Out = [\r\n <#if pre2ndLinkIngressTrafficIn2Out??>\r\n <#list pre2ndLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3 西宁链路TopN APP统计\r\n // 2.1.3.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppIn2OutXN = [\r\n <#if linkEgressTrafficTopNAppIn2OutXN??>\r\n <#list linkEgressTrafficTopNAppIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppIn2OutXN = [\r\n <#if pre1stLinkEgressTrafficTopNAppIn2OutXN??>\r\n <#list pre1stLinkEgressTrafficTopNAppIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppIn2OutXN = [\r\n <#if pre2ndLinkEgressTrafficTopNAppIn2OutXN??>\r\n <#list pre2ndLinkEgressTrafficTopNAppIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppIn2OutXN = [\r\n <#if linkIngressTrafficTopNAppIn2OutXN??>\r\n <#list linkIngressTrafficTopNAppIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppIn2OutXN = [\r\n <#if pre1stLinkIngressTrafficTopNAppIn2OutXN??>\r\n <#list pre1stLinkIngressTrafficTopNAppIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppIn2OutXN = [\r\n <#if pre2ndLinkIngressTrafficTopNAppIn2OutXN??>\r\n <#list pre2ndLinkIngressTrafficTopNAppIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4 西宁链路TopN 省份统计\r\n // 2.1.4.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5 太原链路TopN APP统计\r\n // 2.1.5.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppIn2OutTY = [\r\n <#if linkEgressTrafficTopNAppIn2OutTY??>\r\n <#list linkEgressTrafficTopNAppIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppIn2OutTY = [\r\n <#if pre1stLinkEgressTrafficTopNAppIn2OutTY??>\r\n <#list pre1stLinkEgressTrafficTopNAppIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppIn2OutTY = [\r\n <#if pre2ndLinkEgressTrafficTopNAppIn2OutTY??>\r\n <#list pre2ndLinkEgressTrafficTopNAppIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppIn2OutTY = [\r\n <#if linkIngressTrafficTopNAppIn2OutTY??>\r\n <#list linkIngressTrafficTopNAppIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppIn2OutTY = [\r\n <#if pre1stLinkIngressTrafficTopNAppIn2OutTY??>\r\n <#list pre1stLinkIngressTrafficTopNAppIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppIn2OutTY = [\r\n <#if pre2ndLinkIngressTrafficTopNAppIn2OutTY??>\r\n <#list pre2ndLinkIngressTrafficTopNAppIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6 太原链路TopN 省份统计\r\n // 2.1.6.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7 西安链路TopN APP统计\r\n // 2.1.7.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppIn2OutXA = [\r\n <#if linkEgressTrafficTopNAppIn2OutXA??>\r\n <#list linkEgressTrafficTopNAppIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppIn2OutXA = [\r\n <#if pre1stLinkEgressTrafficTopNAppIn2OutXA??>\r\n <#list pre1stLinkEgressTrafficTopNAppIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppIn2OutXA = [\r\n <#if pre2ndLinkEgressTrafficTopNAppIn2OutXA??>\r\n <#list pre2ndLinkEgressTrafficTopNAppIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppIn2OutXA = [\r\n <#if linkIngressTrafficTopNAppIn2OutXA??>\r\n <#list linkIngressTrafficTopNAppIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppIn2OutXA = [\r\n <#if pre1stLinkIngressTrafficTopNAppIn2OutXA??>\r\n <#list pre1stLinkIngressTrafficTopNAppIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppIn2OutXA = [\r\n <#if pre2ndLinkIngressTrafficTopNAppIn2OutXA??>\r\n <#list pre2ndLinkIngressTrafficTopNAppIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8 西安链路TopN 省份统计\r\n // 2.1.8.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2 省外访问省内\r\n // 2.2.1 上行链路总流量统计\r\n // 2.2.1.1 各链路上行总流量-本周期\r\n var linkEgressTrafficOut2In = [\r\n <#if linkEgressTrafficOut2In??>\r\n <#list linkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.1.2 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficOut2In = [\r\n <#if pre1stLinkEgressTrafficOut2In??>\r\n <#list pre1stLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.1.3 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficOut2In = [\r\n <#if pre2ndLinkEgressTrafficOut2In??>\r\n <#list pre2ndLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.2 下行链路总流量统计\r\n // 2.2.2.1 各链路下行总流量-本周期\r\n var linkIngressTrafficOut2In = [\r\n <#if linkIngressTrafficOut2In??>\r\n <#list linkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.2.2 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficOut2In = [\r\n <#if pre1stLinkIngressTrafficOut2In??>\r\n <#list pre1stLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.2.3 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficOut2In = [\r\n <#if pre2ndLinkIngressTrafficOut2In??>\r\n <#list pre2ndLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3 西宁链路TopN APP统计\r\n // 2.2.3.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppOut2InXN = [\r\n <#if linkEgressTrafficTopNAppOut2InXN??>\r\n <#list linkEgressTrafficTopNAppOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppOut2InXN = [\r\n <#if pre1stLinkEgressTrafficTopNAppOut2InXN??>\r\n <#list pre1stLinkEgressTrafficTopNAppOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppOut2InXN = [\r\n <#if pre2ndLinkEgressTrafficTopNAppOut2InXN??>\r\n <#list pre2ndLinkEgressTrafficTopNAppOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppOut2InXN = [\r\n <#if linkIngressTrafficTopNAppOut2InXN??>\r\n <#list linkIngressTrafficTopNAppOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppOut2InXN = [\r\n <#if pre1stLinkIngressTrafficTopNAppOut2InXN??>\r\n <#list pre1stLinkIngressTrafficTopNAppOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppOut2InXN = [\r\n <#if pre2ndLinkIngressTrafficTopNAppOut2InXN??>\r\n <#list pre2ndLinkIngressTrafficTopNAppOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4 西宁链路TopN 省份统计\r\n // 2.2.4.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5 太原链路TopN APP统计\r\n // 2.2.5.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppOut2InTY = [\r\n <#if linkEgressTrafficTopNAppOut2InTY??>\r\n <#list linkEgressTrafficTopNAppOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppOut2InTY = [\r\n <#if pre1stLinkEgressTrafficTopNAppOut2InTY??>\r\n <#list pre1stLinkEgressTrafficTopNAppOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppOut2InTY = [\r\n <#if pre2ndLinkEgressTrafficTopNAppOut2InTY??>\r\n <#list pre2ndLinkEgressTrafficTopNAppOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppOut2InTY = [\r\n <#if linkIngressTrafficTopNAppOut2InTY??>\r\n <#list linkIngressTrafficTopNAppOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppOut2InTY = [\r\n <#if pre1stLinkIngressTrafficTopNAppOut2InTY??>\r\n <#list pre1stLinkIngressTrafficTopNAppOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppOut2InTY = [\r\n <#if pre2ndLinkIngressTrafficTopNAppOut2InTY??>\r\n <#list pre2ndLinkIngressTrafficTopNAppOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6 太原链路TopN 省份统计\r\n // 2.2.6.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if linkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list linkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if linkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list linkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7 西安链路TopN APP统计\r\n // 2.2.7.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppOut2InXA = [\r\n <#if linkEgressTrafficTopNAppOut2InXA??>\r\n <#list linkEgressTrafficTopNAppOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppOut2InXA = [\r\n <#if pre1stLinkEgressTrafficTopNAppOut2InXA??>\r\n <#list pre1stLinkEgressTrafficTopNAppOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppOut2InXA = [\r\n <#if pre2ndLinkEgressTrafficTopNAppOut2InXA??>\r\n <#list pre2ndLinkEgressTrafficTopNAppOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppOut2InXA = [\r\n <#if linkIngressTrafficTopNAppOut2InXA??>\r\n <#list linkIngressTrafficTopNAppOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppOut2InXA = [\r\n <#if pre1stLinkIngressTrafficTopNAppOut2InXA??>\r\n <#list pre1stLinkIngressTrafficTopNAppOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppOut2InXA = [\r\n <#if pre2ndLinkIngressTrafficTopNAppOut2InXA??>\r\n <#list pre2ndLinkIngressTrafficTopNAppOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8 西安链路TopN 省份统计\r\n // 2.2.8.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /** 数据 end */\r\n\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n trafficRateTrend = trafficRateTrend.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange1\',\r\n \'currentRange2\',\r\n \'currentRange3\',\r\n \'currentRange4\',\r\n \'currentRange9\',\r\n \'currentRange10\',\r\n \'currentRange17\',\r\n \'currentRange18\',\r\n \'currentRange19\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange0\',\r\n \'statisticsRange1\',\r\n \'statisticsRange2\',\r\n \'statisticsRange3\',\r\n \'statisticsRange4\',\r\n \'statisticsRange5\',\r\n \'statisticsRange6\',\r\n \'statisticsRange7\',\r\n \'statisticsRange8\',\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange0\',\r\n \'prevRange1\',\r\n \'prevRange2\',\r\n \'prevRange3\',\r\n \'prevRange4\',\r\n \'prevRange9\',\r\n \'prevRange10\',\r\n \'prevRange17\',\r\n \'prevRange18\',\r\n \'prevRange19\',\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n\r\n // 1.2 流量变化曲线\r\n function initEcharts1() {\r\n var seriesData1 = trafficRateTrend.map(d => [d.stat_time, d.rate] )\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (quantile1.rate99 > quantile1.rate90 && quantile1.rate90 > quantile1.rate50 && (quantile1.rate90 && quantile1.rate50 && quantile1.rate99) !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: quantile1.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: quantile1.rate50,\r\n lte: quantile1.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: quantile1.rate90,\r\n lte: quantile1.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: quantile1.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: quantile1.rate50\r\n },\r\n {\r\n yAxis: quantile1.rate90\r\n },\r\n {\r\n yAxis: quantile1.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n\r\n // 2.1 Top 10 App流量概况\r\n function initEcharts2 () {\r\n var categoryData2 = appCompanyTrafficTop10.map(t => checkXAxisIsEmpty(t.app_company))\r\n var barSeriesData2 = appCompanyTrafficTop10.map(t => {\r\n if (!t.bytes) {\r\n t.bytes = 0\r\n }\r\n return {\r\n value: t.bytes,\r\n percent: trafficSummary.bytes === 0 ? 0 : parseFloat(t.bytes) / trafficSummary.bytes\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n appCompanyTrafficTop10.forEach(t => {\r\n var findData = appCompanyTrafficTop10Pre1st.find(pt => pt.app_company === t.app_company)\r\n if (findData && findData.bytes) {\r\n lineSeriesData1_2.push(findData.bytes === 0 ? 0 : parseFloat(((t.bytes - findData.bytes) / parseFloat(findData.bytes) * 100).toFixed(2)))\r\n var findData2 = appCompanyTrafficTop10Pre2nd.find(ppt => findData.app_company === ppt.app_company)\r\n if (findData2 && findData2.bytes) {\r\n lineSeriesData2_2.push(findData2.bytes === 0 ? 0 : parseFloat(((findData.bytes - findData2.bytes) / parseFloat(findData2.bytes) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].name = \'流量\'\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.1 IDC对外(省Z-A)服务能力Top10省份请求流量分布\r\n function initEcharts3 () {\r\n var categoryData3 = provinceSentTrafficSummaryTop10In2Out.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData3 = provinceSentTrafficSummaryTop10In2Out.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryIn2Out.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryIn2Out.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceSentTrafficSummaryTop10In2Out.forEach(t => {\r\n var findData = provinceSentTrafficSummaryTop10In2OutPre1st.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = provinceSentTrafficSummaryTop10In2OutPre2nd.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_3.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 3\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.2 IDC对外(省Z-A)服务能力Top10省份响应流量分布\r\n function initEcharts4 () {\r\n var categoryData4 = provinceReceivedTrafficSummaryTop10In2Out.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData4 = provinceReceivedTrafficSummaryTop10In2Out.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryOut2In.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryIn2Out.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n provinceReceivedTrafficSummaryTop10In2Out.forEach(t => {\r\n var findData = provinceReceivedTrafficSummaryTop10In2OutPre1st.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_4.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = provinceReceivedTrafficSummaryTop10In2OutPre2nd.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_4.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.5 IDC内容获取(省A-Z)服务能力的Top10省份请求流量分布\r\n function initEcharts5 () {\r\n var categoryData5 = provinceSentTrafficSummaryTop10Out2In.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData5 = provinceSentTrafficSummaryTop10Out2In.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryOut2In.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryOut2In.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n provinceSentTrafficSummaryTop10Out2In.forEach(t => {\r\n var findData = provinceSentTrafficSummaryTop10Out2InPre1st.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = provinceSentTrafficSummaryTop10Out2InPre2nd.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.6 IDC内容获取(省A-Z)服务能力的Top10省份响应流量分布\r\n function initEcharts6 () {\r\n var categoryData6 = provinceReceivedTrafficSummaryTop10Out2In.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData6 = provinceReceivedTrafficSummaryTop10Out2In.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryOut2In.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryOut2In.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_6 = []\r\n // 第二条线\r\n var lineSeriesData2_6 = []\r\n provinceReceivedTrafficSummaryTop10Out2In.forEach(t => {\r\n var findData = provinceReceivedTrafficSummaryTop10Out2InPre1st.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_6.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = provinceReceivedTrafficSummaryTop10Out2InPre2nd.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_6.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_6.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_6.push(0)\r\n lineSeriesData2_6.push(0)\r\n }\r\n })\r\n var copyLineSeriesData6 = [...lineSeriesData1_6, ...lineSeriesData2_6]\r\n var copyBarSeriesData6 = [...barSeriesData6]\r\n copyLineSeriesData6.sort((a, b) => a - b)\r\n copyBarSeriesData6.sort((a, b) => a.value - b.value)\r\n var barMax6 = copyBarSeriesData6.length > 0 ? copyBarSeriesData6[copyBarSeriesData6.length - 1].value : 50\r\n var lineMin6 = copyLineSeriesData6[0] ? copyLineSeriesData6[0] : 0\r\n var lineMax6 = copyLineSeriesData6.length > 0 ? copyLineSeriesData6[copyLineSeriesData6.length - 1] : 0\r\n if (lineMin6 == 0 && lineMin6 == lineMax6) {\r\n lineMin6 = -5\r\n lineMax6 = 1\r\n } else {\r\n var tempLineMin6 = lineMin6\r\n lineMin6 = lineMin6 - 2.5 * (lineMax6 - lineMin6)\r\n lineMax6 = lineMax6 + 0.5 * (lineMax6 - tempLineMin6)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas6\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData6\r\n option.yAxis[0].max = barMax6 * 2\r\n option.yAxis[1].min = lineMin6\r\n option.yAxis[1].max = lineMax6\r\n option.series[0].data = barSeriesData6\r\n option.series[1].data = lineSeriesData1_6\r\n option.series[2].data = lineSeriesData2_6\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.7 IDC对内(地市Z- A)服务能力的Top10省内地区请求流量分布\r\n function initEcharts7 () {\r\n var categoryData7 = inProvinceSentTrafficSummaryTop10In2Out.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData7 = inProvinceSentTrafficSummaryTop10In2Out.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryIn2Out.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryIn2Out.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_7 = []\r\n // 第二条线\r\n var lineSeriesData2_7 = []\r\n inProvinceSentTrafficSummaryTop10In2Out.forEach(t => {\r\n var findData = inProvinceSentTrafficSummaryTop10In2OutPre1st.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_7.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = inProvinceSentTrafficSummaryTop10In2OutPre2nd.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_7.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_7.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_7.push(0)\r\n lineSeriesData2_7.push(0)\r\n }\r\n })\r\n var copyLineSeriesData7 = [...lineSeriesData1_7, ...lineSeriesData2_7]\r\n var copyBarSeriesData7 = [...barSeriesData7]\r\n copyLineSeriesData7.sort((a, b) => a - b)\r\n copyBarSeriesData7.sort((a, b) => a.value - b.value)\r\n var barMax7 = copyBarSeriesData7.length > 0 ? copyBarSeriesData7[copyBarSeriesData7.length - 1].value : 50\r\n var lineMin7 = copyLineSeriesData7[0] ? copyLineSeriesData7[0] : 0\r\n var lineMax7 = copyLineSeriesData7.length > 0 ? copyLineSeriesData7[copyLineSeriesData7.length - 1] : 0\r\n if (lineMin7 == 0 && lineMin7 == lineMax7) {\r\n lineMin7 = -5\r\n lineMax7 = 1\r\n } else {\r\n var tempLineMin7 = lineMin7\r\n lineMin7 = lineMin7 - 2.5 * (lineMax7 - lineMin7)\r\n lineMax7 = lineMax7 + 0.5 * (lineMax7 - tempLineMin7)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas7\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData7\r\n option.yAxis[0].max = barMax7 * 2\r\n option.yAxis[1].min = lineMin7\r\n option.yAxis[1].max = lineMax7\r\n option.series[0].data = barSeriesData7\r\n option.series[1].data = lineSeriesData1_7\r\n option.series[2].data = lineSeriesData2_7\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.8 IDC对内(地市Z-A)服务能力的Top10省份响应流量分布\r\n function initEcharts8 () {\r\n var categoryData8 = inProvinceReceivedTrafficSummaryTop10In2Out.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData8 = inProvinceReceivedTrafficSummaryTop10In2Out.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryIn2Out.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryIn2Out.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n inProvinceReceivedTrafficSummaryTop10In2Out.forEach(t => {\r\n var findData = inProvinceReceivedTrafficSummaryTop10In2OutPre1st.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = inProvinceReceivedTrafficSummaryTop10In2OutPre2nd.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.11 IDC内容获取(地市A-Z)服务能力的Top10省内地区请求流量分布\r\n function initEcharts9 () {\r\n var categoryData9 = inProvinceSentTrafficSummaryTop10Out2In.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData9 = inProvinceSentTrafficSummaryTop10Out2In.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryOut2In.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryOut2In.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n inProvinceSentTrafficSummaryTop10Out2In.forEach(t => {\r\n var findData = inProvinceSentTrafficSummaryTop10Out2InPre1st.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_9.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = inProvinceSentTrafficSummaryTop10Out2InPre2nd.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_9.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.12 IDC内容获取(地市A-Z)服务能力的Top10省内地区响应流量分布\r\n function initEcharts10 () {\r\n var categoryData10 = inProvinceReceivedTrafficSummaryTop10Out2In.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = inProvinceReceivedTrafficSummaryTop10Out2In.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryOut2In.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryOut2In.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n inProvinceReceivedTrafficSummaryTop10Out2In.forEach(t => {\r\n var findData = inProvinceReceivedTrafficSummaryTop10Out2InPre1st.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = inProvinceReceivedTrafficSummaryTop10Out2InPre2nd.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n var option = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n // 4.9 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n function initEcharts11 () {\r\n var province11 = inProvinceTrafficSummaryTop3In2Out[0]\r\n var categoryData11 = []\r\n var seriesData11 = []\r\n var prevSeriesData11 = []\r\n var pprevSeriesData11 = []\r\n if (province11) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3In2OutPre2st,\r\n data: firstInProvinceTrafficTop5AppCompanyIn2Out,\r\n dataPre1st: firstInProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: firstInProvinceTrafficTop5AppCompanyIn2OutPre2st,\r\n province: province11,\r\n unit: \'client_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData11 = callback.categoryData\r\n seriesData11 = callback.seriesData\r\n prevSeriesData11 = callback.prevSeriesData\r\n pprevSeriesData11 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n option.xAxis.data = categoryData11\r\n option.series[2].data = seriesData11\r\n option.series[1].data = prevSeriesData11\r\n option.series[0].data = pprevSeriesData11\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts12 () {\r\n var province12 = inProvinceTrafficSummaryTop3In2Out[1]\r\n var categoryData12 = []\r\n var seriesData12 = []\r\n var prevSeriesData12 = []\r\n var pprevSeriesData12 = []\r\n if (province12) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3In2OutPre2st,\r\n data: secondInProvinceTrafficTop5AppCompanyIn2Out,\r\n dataPre1st: secondInProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: secondInProvinceTrafficTop5AppCompanyIn2OutPre2st,\r\n province: province12,\r\n unit: \'client_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData12 = callback.categoryData\r\n seriesData12 = callback.seriesData\r\n prevSeriesData12 = callback.prevSeriesData\r\n pprevSeriesData12 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas12\')\r\n option.xAxis.data = categoryData12\r\n option.series[2].data = seriesData12\r\n option.series[1].data = prevSeriesData12\r\n option.series[0].data = pprevSeriesData12\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts13 () {\r\n var province13 = inProvinceTrafficSummaryTop3In2Out[2]\r\n var categoryData13 = []\r\n var seriesData13 = []\r\n var prevSeriesData13 = []\r\n var pprevSeriesData13 = []\r\n if (province13) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3In2OutPre2st,\r\n data: thirdInProvinceTrafficTop5AppCompanyIn2Out,\r\n dataPre1st: thirdInProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: thirdInProvinceTrafficTop5AppCompanyIn2OutPre2st,\r\n province: province13,\r\n unit: \'client_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData13 = callback.categoryData\r\n seriesData13 = callback.seriesData\r\n prevSeriesData13 = callback.prevSeriesData\r\n pprevSeriesData13 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n option.xAxis.data = categoryData13\r\n option.series[2].data = seriesData13\r\n option.series[1].data = prevSeriesData13\r\n option.series[0].data = pprevSeriesData13\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.10 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n function initEcharts14 () {\r\n var province14 = inProvinceTrafficSummaryTop3AppIn2Out[0]\r\n var categoryData14 = []\r\n var seriesData14 = []\r\n var prevSeriesData14 = []\r\n var pprevSeriesData14 = []\r\n if (province14) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre2st,\r\n data: firstInProvinceTrafficTop5RegionIn2Out,\r\n dataPre1st: firstInProvinceTrafficTop5RegionIn2OutPre1st,\r\n dataPre2st: firstInProvinceTrafficTop5RegionIn2OutPre2st,\r\n province: province14,\r\n unit: \'app_company\',\r\n unit1: \'client_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData14 = callback.categoryData\r\n seriesData14 = callback.seriesData\r\n prevSeriesData14 = callback.prevSeriesData\r\n pprevSeriesData14 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n option.xAxis.data = categoryData14\r\n option.series[2].data = seriesData14\r\n option.series[1].data = prevSeriesData14\r\n option.series[0].data = pprevSeriesData14\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts15 () {\r\n var province15 = inProvinceTrafficSummaryTop3AppIn2Out[1]\r\n var categoryData15 = []\r\n var seriesData15 = []\r\n var prevSeriesData15 = []\r\n var pprevSeriesData15 = []\r\n if (province15) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre2st,\r\n data: secondInProvinceTrafficTop5RegionIn2Out,\r\n dataPre1st: secondInProvinceTrafficTop5RegionIn2OutPre1st,\r\n dataPre2st: secondInProvinceTrafficTop5RegionIn2OutPre2st,\r\n province: province15,\r\n unit: \'app_company\',\r\n unit1: \'client_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData15 = callback.categoryData\r\n seriesData15 = callback.seriesData\r\n prevSeriesData15 = callback.prevSeriesData\r\n pprevSeriesData15 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas15\')\r\n option.xAxis.data = categoryData15\r\n option.series[2].data = seriesData15\r\n option.series[1].data = prevSeriesData15\r\n option.series[0].data = pprevSeriesData15\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts16 () {\r\n var province16 = inProvinceTrafficSummaryTop3AppIn2Out[2]\r\n var categoryData16 = []\r\n var seriesData16 = []\r\n var prevSeriesData16 = []\r\n var pprevSeriesData16 = []\r\n if (province16) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre2st,\r\n data: thirdInProvinceTrafficTop5RegionIn2Out,\r\n dataPre1st: thirdInProvinceTrafficTop5RegionIn2OutPre1st,\r\n dataPre2st: thirdInProvinceTrafficTop5RegionIn2OutPre2st,\r\n province: province16,\r\n unit: \'app_company\',\r\n unit1: \'client_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData16 = callback.categoryData\r\n seriesData16 = callback.seriesData\r\n prevSeriesData16 = callback.prevSeriesData\r\n pprevSeriesData16 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas16\')\r\n option.xAxis.data = categoryData16\r\n option.series[2].data = seriesData16\r\n option.series[1].data = prevSeriesData16\r\n option.series[0].data = pprevSeriesData16\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.3 IDC对外(省Z-A)提供服务TOP3省份的APP的流量占比\r\n function initEcharts24 () {\r\n var province24 = provinceTrafficSummaryTop3In2Out[0]\r\n var categoryData24 = []\r\n var seriesData24 = []\r\n var prevSeriesData24 = []\r\n var pprevSeriesData24 = []\r\n if (province24) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3In2OutPre2st,\r\n data: firstProvinceTrafficTop5AppCompanyIn2Out,\r\n dataPre1st: firstProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: firstProvinceTrafficTop5AppCompanyZAPre2st,\r\n province: province24,\r\n unit: \'server_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData24 = callback.categoryData\r\n seriesData24 = callback.seriesData\r\n prevSeriesData24 = callback.prevSeriesData\r\n pprevSeriesData24 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas24\')\r\n option.xAxis.data = categoryData24\r\n option.series[2].data = seriesData24\r\n option.series[1].data = prevSeriesData24\r\n option.series[0].data = pprevSeriesData24\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts25 () {\r\n var province25 = provinceTrafficSummaryTop3In2Out[1]\r\n var categoryData25 = []\r\n var seriesData25 = []\r\n var prevSeriesData25 = []\r\n var pprevSeriesData25 = []\r\n if (province25) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3In2OutPre2st,\r\n data: secondProvinceTrafficTop5AppCIn2Outomapnty,\r\n dataPre1st: secondProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: secondProvinceTrafficTop5AppCompanyIn2OutPre2st,\r\n province: province25,\r\n unit: \'server_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData25 = callback.categoryData\r\n seriesData25 = callback.seriesData\r\n prevSeriesData25 = callback.prevSeriesData\r\n pprevSeriesData25 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas25\')\r\n option.xAxis.data = categoryData25\r\n option.series[2].data = seriesData25\r\n option.series[1].data = prevSeriesData25\r\n option.series[0].data = pprevSeriesData25\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts26 () {\r\n var province26 = provinceTrafficSummaryTop3In2Out[2]\r\n var categoryData26 = []\r\n var seriesData26 = []\r\n var prevSeriesData26 = []\r\n var pprevSeriesData26 = []\r\n if (province26) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3In2OutPre2st,\r\n data: thirdProvinceTrafficTop5AppCompanyIn2Out,\r\n dataPre1st: thirdProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: thirdProvinceTrafficTop5AppCompanyIn2OutPre2st,\r\n province: province26,\r\n unit: \'server_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData26 = callback.categoryData\r\n seriesData26 = callback.seriesData\r\n prevSeriesData26 = callback.prevSeriesData\r\n pprevSeriesData26 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas26\')\r\n option.xAxis.data = categoryData26\r\n option.series[2].data = seriesData26\r\n option.series[1].data = prevSeriesData26\r\n option.series[0].data = pprevSeriesData26\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.4 IDC对外(省Z-A)提供服务TOP3 APP的省份流量占比\r\n function initEcharts27 () {\r\n var province27 = appTrafficSummaryTop3In2Out[0]\r\n var categoryData27 = []\r\n var seriesData27 = []\r\n var prevSeriesData27 = []\r\n var pprevSeriesData27 = []\r\n if (province27) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: appTrafficSummaryTop3In2OutPre2st,\r\n data: firstAppTrafficTop5ProvinceIn2Out,\r\n dataPre1st: firstAppTrafficTop5ProvinceIn2OutPre1st,\r\n dataPre2st: firstAppTrafficTop5ProvinceIn2OutPre2st,\r\n province: province27,\r\n unit: \'app_company\',\r\n unit1: \'server_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData27 = callback.categoryData\r\n seriesData27 = callback.seriesData\r\n prevSeriesData27 = callback.prevSeriesData\r\n pprevSeriesData27 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas27\')\r\n option.xAxis.data = categoryData27\r\n option.series[2].data = seriesData27\r\n option.series[1].data = prevSeriesData27\r\n option.series[0].data = pprevSeriesData27\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts28() {\r\n var province28 = appTrafficSummaryTop3In2Out[1]\r\n var categoryData28 = []\r\n var seriesData28 = []\r\n var prevSeriesData28 = []\r\n var pprevSeriesData28 = []\r\n if (province28) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: appTrafficSummaryTop3In2OutPre2st,\r\n data: secondeAppTrafficTop5ProvinceIn2Out,\r\n dataPre1st: secondAppTrafficTop5ProvinceIn2OutPre1st,\r\n dataPre2st: secondAppTrafficTop5ProvinceIn2OutPre2st,\r\n province: province28,\r\n unit: \'app_company\',\r\n unit1: \'server_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData28 = callback.categoryData\r\n seriesData28 = callback.seriesData\r\n prevSeriesData28 = callback.prevSeriesData\r\n pprevSeriesData28 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas28\')\r\n option.xAxis.data = categoryData28\r\n option.series[2].data = seriesData28\r\n option.series[1].data = prevSeriesData28\r\n option.series[0].data = pprevSeriesData28\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts29 () {\r\n var province29 = appTrafficSummaryTop3In2Out[2]\r\n var categoryData29 = []\r\n var seriesData29 = []\r\n var prevSeriesData29 = []\r\n var pprevSeriesData29 = []\r\n if (province29) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: appTrafficSummaryTop3In2OutPre2st,\r\n data: thirdAppTrafficTop5ProvinceIn2Out,\r\n dataPre1st: thirdAppTrafficTop5ProvinceIn2OutPre1st,\r\n dataPre2st: thirdAppTrafficTop5ProvinceIn2OutPre2st,\r\n province: province29,\r\n unit: \'app_company\',\r\n unit1: \'server_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData29 = callback.categoryData\r\n seriesData29 = callback.seriesData\r\n prevSeriesData29 = callback.prevSeriesData\r\n pprevSeriesData29 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas29\')\r\n option.xAxis.data = categoryData29\r\n option.series[2].data = seriesData29\r\n option.series[1].data = prevSeriesData29\r\n option.series[0].data = pprevSeriesData29\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts30 () {\r\n var province30 = provinceTrafficSummaryTop3Out2In[0]\r\n var categoryData30 = []\r\n var seriesData30 = []\r\n var prevSeriesData30 = []\r\n var pprevSeriesData30 = []\r\n if (province30) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3Out2InPre2st,\r\n data: firstProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: firstProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: firstProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province30,\r\n unit: \'client_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData30 = callback.categoryData\r\n seriesData30 = callback.seriesData\r\n prevSeriesData30 = callback.prevSeriesData\r\n pprevSeriesData30 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas30\')\r\n option.xAxis.data = categoryData30\r\n option.series[2].data = seriesData30\r\n option.series[1].data = prevSeriesData30\r\n option.series[0].data = pprevSeriesData30\r\n myChart.setOption(option)\r\n }\r\n function initEcharts31 () {\r\n var province31 = provinceTrafficSummaryTop3Out2In[1]\r\n var categoryData31 = []\r\n var seriesData31 = []\r\n var prevSeriesData31 = []\r\n var pprevSeriesData31 = []\r\n if (province31) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3Out2InPre2st,\r\n data: secondProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: secondProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: secondProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province31,\r\n unit: \'client_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData31 = callback.categoryData\r\n seriesData31 = callback.seriesData\r\n prevSeriesData31 = callback.prevSeriesData\r\n pprevSeriesData31 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas31\')\r\n option.xAxis.data = categoryData31\r\n option.series[2].data = seriesData31\r\n option.series[1].data = prevSeriesData31\r\n option.series[0].data = pprevSeriesData31\r\n myChart.setOption(option)\r\n }\r\n function initEcharts32 () {\r\n var province32 = provinceTrafficSummaryTop3Out2In[2]\r\n var categoryData32 = []\r\n var seriesData32 = []\r\n var prevSeriesData32 = []\r\n var pprevSeriesData32 = []\r\n if (province32) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3Out2InPre2st,\r\n data: thirdProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: thirdProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: thirdProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province32,\r\n unit: \'client_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData32 = callback.categoryData\r\n seriesData32 = callback.seriesData\r\n prevSeriesData32 = callback.prevSeriesData\r\n pprevSeriesData32 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas32\')\r\n option.xAxis.data = categoryData32\r\n option.series[2].data = seriesData32\r\n option.series[1].data = prevSeriesData32\r\n option.series[0].data = pprevSeriesData32\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts33 () {\r\n var province33 = appTrafficSummaryTop3Out2In[0]\r\n var categoryData33 = []\r\n var seriesData33 = []\r\n var prevSeriesData33 = []\r\n var pprevSeriesData33 = []\r\n if (province33) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: appTrafficSummaryTop3Out2InPre2st,\r\n data: firstAppTrafficTop5ProvinceOut2In,\r\n dataPre1st: firstAppTrafficTop5ProvinceOut2InPre1st,\r\n dataPre2st: firstAppTrafficTop5ProvinceOut2InPre2st,\r\n province: province33,\r\n unit: \'app_company\',\r\n unit1: \'client_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData33 = callback.categoryData\r\n seriesData33 = callback.seriesData\r\n prevSeriesData33 = callback.prevSeriesData\r\n pprevSeriesData33 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas33\')\r\n option.xAxis.data = categoryData33\r\n option.series[2].data = seriesData33\r\n option.series[1].data = prevSeriesData33\r\n option.series[0].data = pprevSeriesData33\r\n myChart.setOption(option)\r\n }\r\n function initEcharts34 () {\r\n var province34 = appTrafficSummaryTop3Out2In[1]\r\n var categoryData34 = []\r\n var seriesData34 = []\r\n var prevSeriesData34 = []\r\n var pprevSeriesData34 = []\r\n if (province34) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: appTrafficSummaryTop3Out2InPre2st,\r\n data: secondeAppTrafficTop5ProvinceOut2In,\r\n dataPre1st: secondAppTrafficTop5ProvinceOut2InPre1st,\r\n dataPre2st: secondAppTrafficTop5ProvinceOut2InPre2st,\r\n province: province34,\r\n unit: \'app_company\',\r\n unit1: \'client_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData34 = callback.categoryData\r\n seriesData34 = callback.seriesData\r\n prevSeriesData34 = callback.prevSeriesData\r\n pprevSeriesData34 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas34\')\r\n option.xAxis.data = categoryData34\r\n option.series[2].data = seriesData34\r\n option.series[1].data = prevSeriesData34\r\n option.series[0].data = pprevSeriesData34\r\n myChart.setOption(option)\r\n }\r\n function initEcharts35 () {\r\n var province35 = appTrafficSummaryTop3Out2In[2]\r\n var categoryData35 = []\r\n var seriesData35 = []\r\n var prevSeriesData35 = []\r\n var pprevSeriesData35 = []\r\n if (province35) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: appTrafficSummaryTop3Out2InPre2st,\r\n data: thirdAppTrafficTop5ProvinceOut2In,\r\n dataPre1st: thirdAppTrafficTop5ProvinceOut2InPre1st,\r\n dataPre2st: thirdAppTrafficTop5ProvinceOut2InPre2st,\r\n province: province35,\r\n unit: \'app_company\',\r\n unit1: \'client_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData35 = callback.categoryData\r\n seriesData35 = callback.seriesData\r\n prevSeriesData35 = callback.prevSeriesData\r\n pprevSeriesData35 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas35\')\r\n option.xAxis.data = categoryData35\r\n option.series[2].data = seriesData35\r\n option.series[1].data = prevSeriesData35\r\n option.series[0].data = pprevSeriesData35\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts36 () {\r\n var province36 = inProvinceTrafficSummaryTop3Out2In[0]\r\n var categoryData36 = []\r\n var seriesData36 = []\r\n var prevSeriesData36 = []\r\n var pprevSeriesData36 = []\r\n if (province36) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3Out2InPre2st,\r\n data: firstInProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: firstInProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: firstInProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province36,\r\n unit: \'server_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData36 = callback.categoryData\r\n seriesData36 = callback.seriesData\r\n prevSeriesData36 = callback.prevSeriesData\r\n pprevSeriesData36 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas36\')\r\n option.xAxis.data = categoryData36\r\n option.series[2].data = seriesData36\r\n option.series[1].data = prevSeriesData36\r\n option.series[0].data = pprevSeriesData36\r\n myChart.setOption(option)\r\n }\r\n function initEcharts37 () {\r\n var province37 = inProvinceTrafficSummaryTop3Out2In[1]\r\n var categoryData37 = []\r\n var seriesData37 = []\r\n var prevSeriesData37 = []\r\n var pprevSeriesData37 = []\r\n if (province37) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3Out2InPre2st,\r\n data: secondInProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: secondInProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: secondInProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province37,\r\n unit: \'server_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData37 = callback.categoryData\r\n seriesData37 = callback.seriesData\r\n prevSeriesData37 = callback.prevSeriesData\r\n pprevSeriesData37 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas37\')\r\n option.xAxis.data = categoryData37\r\n option.series[2].data = seriesData37\r\n option.series[1].data = prevSeriesData37\r\n option.series[0].data = pprevSeriesData37\r\n myChart.setOption(option)\r\n }\r\n function initEcharts38 () {\r\n var province38 = inProvinceTrafficSummaryTop3Out2In[2]\r\n var categoryData38 = []\r\n var seriesData38 = []\r\n var prevSeriesData38 = []\r\n var pprevSeriesData38 = []\r\n if (province38) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3Out2InPre2st,\r\n data: thirdInProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: thirdInProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: thirdInProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province38,\r\n unit: \'server_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData38 = callback.categoryData\r\n seriesData38 = callback.seriesData\r\n prevSeriesData38 = callback.prevSeriesData\r\n pprevSeriesData38 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas38\')\r\n option.xAxis.data = categoryData38\r\n option.series[2].data = seriesData38\r\n option.series[1].data = prevSeriesData38\r\n option.series[0].data = pprevSeriesData38\r\n myChart.setOption(option)\r\n }\r\n function initEcharts39 () {\r\n var province39 = inProvinceTrafficSummaryTop3AppOut2In[0]\r\n var categoryData39 = []\r\n var seriesData39 = []\r\n var prevSeriesData39 = []\r\n var pprevSeriesData39 = []\r\n if (province39) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppOut2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppOut2InPre2st,\r\n data: firstInProvinceTrafficTop5RegionOut2In,\r\n dataPre1st: firstInProvinceTrafficTop5RegionOut2InPre1st,\r\n dataPre2st: firstInProvinceTrafficTop5RegionOut2InPre2st,\r\n province: province39,\r\n unit: \'app_company\',\r\n unit1: \'server_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData39 = callback.categoryData\r\n seriesData39 = callback.seriesData\r\n prevSeriesData39 = callback.prevSeriesData\r\n pprevSeriesData39 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas39\')\r\n option.xAxis.data = categoryData39\r\n option.series[2].data = seriesData39\r\n option.series[1].data = prevSeriesData39\r\n option.series[0].data = pprevSeriesData39\r\n myChart.setOption(option)\r\n }\r\n function initEcharts40 () {\r\n var province40 = inProvinceTrafficSummaryTop3AppOut2In[1]\r\n var categoryData40 = []\r\n var seriesData40 = []\r\n var prevSeriesData40 = []\r\n var pprevSeriesData40 = []\r\n if (province40) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppOut2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppOut2InPre2st,\r\n data: secondInProvinceTrafficTop5RegionOut2In,\r\n dataPre1st: secondInProvinceTrafficTop5RegionOut2InPre1st,\r\n dataPre2st: secondInProvinceTrafficTop5RegionOut2InPre2st,\r\n province: province40,\r\n unit: \'app_company\',\r\n unit1: \'server_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData40 = callback.categoryData\r\n seriesData40 = callback.seriesData\r\n prevSeriesData40 = callback.prevSeriesData\r\n pprevSeriesData40 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas40\')\r\n option.series[2].data = seriesData40\r\n option.series[1].data = prevSeriesData40\r\n option.series[0].data = pprevSeriesData40\r\n myChart.setOption(option)\r\n }\r\n function initEcharts41 () {\r\n var province41 = inProvinceTrafficSummaryTop3AppOut2In[2]\r\n var categoryData41 = []\r\n var seriesData41 = []\r\n var prevSeriesData41 = []\r\n var pprevSeriesData41 = []\r\n if (province41) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppOut2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppOut2InPre2st,\r\n data: thirdInProvinceTrafficTop5RegionOut2In,\r\n dataPre1st: thirdInProvinceTrafficTop5RegionOut2InPre1st,\r\n dataPre2st: thirdInProvinceTrafficTop5RegionOut2InPre2st,\r\n province: province41,\r\n unit: \'app_company\',\r\n unit1: \'server_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData41 = callback.categoryData\r\n seriesData41 = callback.seriesData\r\n prevSeriesData41 = callback.prevSeriesData\r\n pprevSeriesData41 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas41\')\r\n option.xAxis.data = categoryData41\r\n option.series[2].data = seriesData41\r\n option.series[1].data = prevSeriesData41\r\n option.series[0].data = pprevSeriesData41\r\n myChart.setOption(option)\r\n }\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n // 省内访问省外\r\n function initEcharts42 () {\r\n var Data42 = []\r\n var Links42 = []\r\n linkDirectionTrafficIn2Out.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data42.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links42 = linkDirectionTrafficIn2Out.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data42 = Array.from(new Set(Data42))\r\n Data42 = Data42.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas42\')\r\n sankeyOption.series[0].data = Data42\r\n sankeyOption.series[0].links = Links42\r\n myChart.setOption(sankeyOption)\r\n }\r\n\r\n // 上行链路 TOP5 App流量占比\r\n function initEcharts43 () {\r\n var province43 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西宁\')\r\n var categoryData43 = []\r\n var seriesData43 = []\r\n var prevSeriesData43 = []\r\n var pprevSeriesData43 = []\r\n if (province43) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNAppIn2OutXN,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppIn2OutXN,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppIn2OutXN,\r\n province: province43,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData43 = callback.categoryData\r\n seriesData43 = callback.seriesData\r\n prevSeriesData43 = callback.prevSeriesData\r\n pprevSeriesData43 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas43\')\r\n option.xAxis.data = categoryData43\r\n option.series[2].data = seriesData43\r\n option.series[1].data = prevSeriesData43\r\n option.series[0].data = pprevSeriesData43\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts44 () {\r\n var province44 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'太原\')\r\n var categoryData44 = []\r\n var seriesData44 = []\r\n var prevSeriesData44 = []\r\n var pprevSeriesData44 = []\r\n if (province44) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNAppIn2OutTY,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppIn2OutTY,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppIn2OutTY,\r\n province: province44,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData44 = callback.categoryData\r\n seriesData44 = callback.seriesData\r\n prevSeriesData44 = callback.prevSeriesData\r\n pprevSeriesData44 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas44\')\r\n option.xAxis.data = categoryData44\r\n option.series[2].data = seriesData44\r\n option.series[1].data = prevSeriesData44\r\n option.series[0].data = pprevSeriesData44\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts45 () {\r\n var province45 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西安\')\r\n var categoryData45 = []\r\n var seriesData45 = []\r\n var prevSeriesData45 = []\r\n var pprevSeriesData45 = []\r\n if (province45) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNAppIn2OutXA,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppIn2OutXA,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppIn2OutXA,\r\n province: province45,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData45 = callback.categoryData\r\n seriesData45 = callback.seriesData\r\n prevSeriesData45 = callback.prevSeriesData\r\n pprevSeriesData45 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas45\')\r\n option.xAxis.data = categoryData45\r\n option.series[2].data = seriesData45\r\n option.series[1].data = prevSeriesData45\r\n option.series[0].data = pprevSeriesData45\r\n myChart.setOption(option)\r\n }\r\n\r\n // 下行链路 TOP5 App流量占比\r\n function initEcharts46 () {\r\n var province46 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西宁\')\r\n var categoryData46 = []\r\n var seriesData46 = []\r\n var prevSeriesData46 = []\r\n var pprevSeriesData46 = []\r\n if (province46) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNAppIn2OutXN,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppIn2OutXN,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppIn2OutXN,\r\n province: province46,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData46 = callback.categoryData\r\n seriesData46 = callback.seriesData\r\n prevSeriesData46 = callback.prevSeriesData\r\n pprevSeriesData46 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas46\')\r\n option.xAxis.data = categoryData46\r\n option.series[2].data = seriesData46\r\n option.series[1].data = prevSeriesData46\r\n option.series[0].data = pprevSeriesData46\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts47 () {\r\n var province47 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'太原\')\r\n var categoryData47 = []\r\n var seriesData47 = []\r\n var prevSeriesData47 = []\r\n var pprevSeriesData47 = []\r\n if (province47) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNAppIn2OutTY,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppIn2OutTY,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppIn2OutTY,\r\n province: province47,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData47 = callback.categoryData\r\n seriesData47 = callback.seriesData\r\n prevSeriesData47 = callback.prevSeriesData\r\n pprevSeriesData47 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas47\')\r\n option.xAxis.data = categoryData47\r\n option.series[2].data = seriesData47\r\n option.series[1].data = prevSeriesData47\r\n option.series[0].data = pprevSeriesData47\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts48 () {\r\n var province48 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西安\')\r\n var categoryData48 = []\r\n var seriesData48 = []\r\n var prevSeriesData48 = []\r\n var pprevSeriesData48 = []\r\n if (province48) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNAppIn2OutXA,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppIn2OutXA,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppIn2OutXA,\r\n province: province48,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData48 = callback.categoryData\r\n seriesData48 = callback.seriesData\r\n prevSeriesData48 = callback.prevSeriesData\r\n pprevSeriesData48 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas48\')\r\n option.xAxis.data = categoryData48\r\n option.series[2].data = seriesData48\r\n option.series[1].data = prevSeriesData48\r\n option.series[0].data = pprevSeriesData48\r\n myChart.setOption(option)\r\n }\r\n\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts49 () {\r\n var province49 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西宁\')\r\n var categoryData49 = []\r\n var seriesData49 = []\r\n var prevSeriesData49 = []\r\n var pprevSeriesData49 = []\r\n if (province49) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNProvinceIn2OutXN,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceIn2OutXN,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceIn2OutXN,\r\n province: province49,\r\n unit: \'egress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData49 = callback.categoryData\r\n seriesData49 = callback.seriesData\r\n prevSeriesData49 = callback.prevSeriesData\r\n pprevSeriesData49 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas49\')\r\n option.xAxis.data = categoryData49\r\n option.series[2].data = seriesData49\r\n option.series[1].data = prevSeriesData49\r\n option.series[0].data = pprevSeriesData49\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts50 () {\r\n var province50 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'太原\')\r\n var categoryData50 = []\r\n var seriesData50 = []\r\n var prevSeriesData50 = []\r\n var pprevSeriesData50 = []\r\n if (province50) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNProvinceIn2OutTY,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceIn2OutTY,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceIn2OutTY,\r\n province: province50,\r\n unit: \'egress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData50 = callback.categoryData\r\n seriesData50 = callback.seriesData\r\n prevSeriesData50 = callback.prevSeriesData\r\n pprevSeriesData50 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas50\')\r\n option.xAxis.data = categoryData50\r\n option.series[2].data = seriesData50\r\n option.series[1].data = prevSeriesData50\r\n option.series[0].data = pprevSeriesData50\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts51 () {\r\n var province51 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西安\')\r\n var categoryData51 = []\r\n var seriesData51 = []\r\n var prevSeriesData51 = []\r\n var pprevSeriesData51 = []\r\n if (province51) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNProvinceIn2OutXA,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceIn2OutXA,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceIn2OutXA,\r\n province: province51,\r\n unit: \'egress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData51 = callback.categoryData\r\n seriesData51 = callback.seriesData\r\n prevSeriesData51 = callback.prevSeriesData\r\n pprevSeriesData51 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas51\')\r\n option.xAxis.data = categoryData51\r\n option.series[2].data = seriesData51\r\n option.series[1].data = prevSeriesData51\r\n option.series[0].data = pprevSeriesData51\r\n myChart.setOption(option)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts52 () {\r\n var province52 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西宁\')\r\n var categoryData52 = []\r\n var seriesData52 = []\r\n var prevSeriesData52 = []\r\n var pprevSeriesData52 = []\r\n if (province52) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNProvinceIn2OutXN,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceIn2OutXN,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceIn2OutXN,\r\n province: province52,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData52 = callback.categoryData\r\n seriesData52 = callback.seriesData\r\n prevSeriesData52 = callback.prevSeriesData\r\n pprevSeriesData52 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas52\')\r\n option.xAxis.data = categoryData52\r\n option.series[2].data = seriesData52\r\n option.series[1].data = prevSeriesData52\r\n option.series[0].data = pprevSeriesData52\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts53 () {\r\n var province53 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'太原\')\r\n var categoryData53 = []\r\n var seriesData53 = []\r\n var prevSeriesData53 = []\r\n var pprevSeriesData53 = []\r\n if (province53) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNProvinceIn2OutTY,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceIn2OutTY,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceIn2OutTY,\r\n province: province53,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData53 = callback.categoryData\r\n seriesData53 = callback.seriesData\r\n prevSeriesData53 = callback.prevSeriesData\r\n pprevSeriesData53 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas53\')\r\n option.xAxis.data = categoryData53\r\n option.series[2].data = seriesData53\r\n option.series[1].data = prevSeriesData53\r\n option.series[0].data = pprevSeriesData53\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts54 () {\r\n var province54 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西安\')\r\n var categoryData54 = []\r\n var seriesData54 = []\r\n var prevSeriesData54 = []\r\n var pprevSeriesData54 = []\r\n if (province54) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNProvinceIn2OutXA,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceIn2OutXA,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceIn2OutXA,\r\n province: province54,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData54 = callback.categoryData\r\n seriesData54 = callback.seriesData\r\n prevSeriesData54 = callback.prevSeriesData\r\n pprevSeriesData54 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas54\')\r\n option.xAxis.data = categoryData54\r\n option.series[2].data = seriesData54\r\n option.series[1].data = prevSeriesData54\r\n option.series[0].data = pprevSeriesData54\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内\r\n function initEcharts55 () {\r\n var Data55 = []\r\n var Links55 = []\r\n linkDirectionTrafficOut2In.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data55.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links55 = linkDirectionTrafficOut2In.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data55 = Array.from(new Set(Data55))\r\n Data55 = Data55.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas55\')\r\n sankeyOption.series[0].data = Data55\r\n sankeyOption.series[0].links = Links55\r\n myChart.setOption(sankeyOption)\r\n }\r\n\r\n // 上行链路 TOP5 App流量占比\r\n function initEcharts56 () {\r\n var province56 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西宁\')\r\n var categoryData56 = []\r\n var seriesData56 = []\r\n var prevSeriesData56 = []\r\n var pprevSeriesData56 = []\r\n if (province56) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNAppOut2InXN,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppOut2InXN,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppOut2InXN,\r\n province: province56,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData56 = callback.categoryData\r\n seriesData56 = callback.seriesData\r\n prevSeriesData56 = callback.prevSeriesData\r\n pprevSeriesData56 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas56\')\r\n option.xAxis.data = categoryData56\r\n option.series[2].data = seriesData56\r\n option.series[1].data = prevSeriesData56\r\n option.series[0].data = pprevSeriesData56\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts57 () {\r\n var province57 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'太原\')\r\n var categoryData57 = []\r\n var seriesData57 = []\r\n var prevSeriesData57 = []\r\n var pprevSeriesData57 = []\r\n if (province57) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNAppOut2InTY,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppOut2InTY,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppOut2InTY,\r\n province: province57,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData57 = callback.categoryData\r\n seriesData57 = callback.seriesData\r\n prevSeriesData57 = callback.prevSeriesData\r\n pprevSeriesData57 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas57\')\r\n option.xAxis.data = categoryData57\r\n option.series[2].data = seriesData57\r\n option.series[1].data = prevSeriesData57\r\n option.series[0].data = pprevSeriesData57\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts58 () {\r\n var province58 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西安\')\r\n var categoryData58 = []\r\n var seriesData58 = []\r\n var prevSeriesData58 = []\r\n var pprevSeriesData58 = []\r\n if (province58) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNAppOut2InXA,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppOut2InXA,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppOut2InXA,\r\n province: province58,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData58 = callback.categoryData\r\n seriesData58 = callback.seriesData\r\n prevSeriesData58 = callback.prevSeriesData\r\n pprevSeriesData58 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas58\')\r\n option.xAxis.data = categoryData58\r\n option.series[2].data = seriesData58\r\n option.series[1].data = prevSeriesData58\r\n option.series[0].data = pprevSeriesData58\r\n myChart.setOption(option)\r\n }\r\n\r\n // 下行链路 TOP5 App流量占比\r\n function initEcharts59 () {\r\n var province59 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西宁\')\r\n var categoryData59 = []\r\n var seriesData59 = []\r\n var prevSeriesData59 = []\r\n var pprevSeriesData59 = []\r\n if (province59) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNAppOut2InXN,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppOut2InXN,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppOut2InXN,\r\n province: province59,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData59 = callback.categoryData\r\n seriesData59 = callback.seriesData\r\n prevSeriesData59 = callback.prevSeriesData\r\n pprevSeriesData59 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas59\')\r\n option.xAxis.data = categoryData59\r\n option.series[2].data = seriesData59\r\n option.series[1].data = prevSeriesData59\r\n option.series[0].data = pprevSeriesData59\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts60 () {\r\n var province60 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'太原\')\r\n var categoryData60 = []\r\n var seriesData60 = []\r\n var prevSeriesData60 = []\r\n var pprevSeriesData60 = []\r\n if (province60) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNAppOut2InTY,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppOut2InTY,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppOut2InTY,\r\n province: province60,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData60 = callback.categoryData\r\n seriesData60 = callback.seriesData\r\n prevSeriesData60 = callback.prevSeriesData\r\n pprevSeriesData60 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas60\')\r\n option.xAxis.data = categoryData60\r\n option.series[2].data = seriesData60\r\n option.series[1].data = prevSeriesData60\r\n option.series[0].data = pprevSeriesData60\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts61 () {\r\n var province61 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西安\')\r\n var categoryData61 = []\r\n var seriesData61 = []\r\n var prevSeriesData61 = []\r\n var pprevSeriesData61 = []\r\n if (province61) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNAppOut2InXA,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppOut2InXA,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppOut2InXA,\r\n province: province61,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData61 = callback.categoryData\r\n seriesData61 = callback.seriesData\r\n prevSeriesData61 = callback.prevSeriesData\r\n pprevSeriesData61 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas61\')\r\n option.xAxis.data = categoryData61\r\n option.series[2].data = seriesData61\r\n option.series[1].data = prevSeriesData61\r\n option.series[0].data = pprevSeriesData61\r\n myChart.setOption(option)\r\n }\r\n\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts62 () {\r\n var province62 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西宁\')\r\n var categoryData62 = []\r\n var seriesData62 = []\r\n var prevSeriesData62 = []\r\n var pprevSeriesData62 = []\r\n if (province62) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNProvinceOut2InXN,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceOut2InXN,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceOut2InXN,\r\n province: province62,\r\n unit: \'egress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData62 = callback.categoryData\r\n seriesData62 = callback.seriesData\r\n prevSeriesData62 = callback.prevSeriesData\r\n pprevSeriesData62 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas62\')\r\n option.xAxis.data = categoryData62\r\n option.series[2].data = seriesData62\r\n option.series[1].data = prevSeriesData62\r\n option.series[0].data = pprevSeriesData62\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts63 () {\r\n var province63 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'太原\')\r\n var categoryData63 = []\r\n var seriesData63 = []\r\n var prevSeriesData63 = []\r\n var pprevSeriesData63 = []\r\n if (province63) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNProvinceOut2InTY,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceOut2InTY,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceOut2InTY,\r\n province: province63,\r\n unit: \'egress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData63 = callback.categoryData\r\n seriesData63 = callback.seriesData\r\n prevSeriesData63 = callback.prevSeriesData\r\n pprevSeriesData63 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas63\')\r\n option.xAxis.data = categoryData63\r\n option.series[2].data = seriesData63\r\n option.series[1].data = prevSeriesData63\r\n option.series[0].data = pprevSeriesData63\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts64 () {\r\n var province64 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西安\')\r\n var categoryData64 = []\r\n var seriesData64 = []\r\n var prevSeriesData64 = []\r\n var pprevSeriesData64 = []\r\n if (province64) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNProvinceOut2InXA,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceOut2InXA,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceOut2InXA,\r\n province: province64,\r\n unit: \'egress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData64 = callback.categoryData\r\n seriesData64 = callback.seriesData\r\n prevSeriesData64 = callback.prevSeriesData\r\n pprevSeriesData64 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas64\')\r\n option.xAxis.data = categoryData64\r\n option.series[2].data = seriesData64\r\n option.series[1].data = prevSeriesData64\r\n option.series[0].data = pprevSeriesData64\r\n myChart.setOption(option)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts65 () {\r\n var province65 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西宁\')\r\n var categoryData65 = []\r\n var seriesData65 = []\r\n var prevSeriesData65 = []\r\n var pprevSeriesData65 = []\r\n if (province65) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNProvinceOut2InXN,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceOut2InXN,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceOut2InXN,\r\n province: province65,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData65 = callback.categoryData\r\n seriesData65 = callback.seriesData\r\n prevSeriesData65 = callback.prevSeriesData\r\n pprevSeriesData65 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas65\')\r\n option.xAxis.data = categoryData65\r\n option.series[2].data = seriesData65\r\n option.series[1].data = prevSeriesData65\r\n option.series[0].data = pprevSeriesData65\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts66 () {\r\n var province66 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'太原\')\r\n var categoryData66 = []\r\n var seriesData66 = []\r\n var prevSeriesData66 = []\r\n var pprevSeriesData66 = []\r\n if (province66) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNProvinceOut2InTY,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceOut2InTY,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceOut2InTY,\r\n province: province66,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData66 = callback.categoryData\r\n seriesData66 = callback.seriesData\r\n prevSeriesData66 = callback.prevSeriesData\r\n pprevSeriesData66 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas66\')\r\n option.xAxis.data = categoryData66\r\n option.series[2].data = seriesData66\r\n option.series[1].data = prevSeriesData66\r\n option.series[0].data = pprevSeriesData66\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts67 () {\r\n var province67 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西安\')\r\n var categoryData67 = []\r\n var seriesData67 = []\r\n var prevSeriesData67 = []\r\n var pprevSeriesData67 = []\r\n if (province67) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNProvinceOut2InXA,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceOut2InXA,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceOut2InXA,\r\n province: province67,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData67 = callback.categoryData\r\n seriesData67 = callback.seriesData\r\n prevSeriesData67 = callback.prevSeriesData\r\n pprevSeriesData67 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas67\')\r\n option.xAxis.data = categoryData67\r\n option.series[2].data = seriesData67\r\n option.series[1].data = prevSeriesData67\r\n option.series[0].data = pprevSeriesData67\r\n myChart.setOption(option)\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts6() } catch (e) { console.error(e) }\r\n try { initEcharts7() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts12() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts15() } catch (e) { console.error(e) }\r\n try { initEcharts16() } catch (e) { console.error(e) }\r\n try { initEcharts24() } catch (e) { console.error(e) }\r\n try { initEcharts25() } catch (e) { console.error(e) }\r\n try { initEcharts26() } catch (e) { console.error(e) }\r\n try { initEcharts27() } catch (e) { console.error(e) }\r\n try { initEcharts28() } catch (e) { console.error(e) }\r\n try { initEcharts29() } catch (e) { console.error(e) }\r\n try { initEcharts30() } catch (e) { console.error(e) }\r\n try { initEcharts31() } catch (e) { console.error(e) }\r\n try { initEcharts32() } catch (e) { console.error(e) }\r\n try { initEcharts33() } catch (e) { console.error(e) }\r\n try { initEcharts34() } catch (e) { console.error(e) }\r\n try { initEcharts35() } catch (e) { console.error(e) }\r\n try { initEcharts36() } catch (e) { console.error(e) }\r\n try { initEcharts37() } catch (e) { console.error(e) }\r\n try { initEcharts38() } catch (e) { console.error(e) }\r\n try { initEcharts39() } catch (e) { console.error(e) }\r\n try { initEcharts40() } catch (e) { console.error(e) }\r\n try { initEcharts41() } catch (e) { console.error(e) }\r\n try { initEcharts42() } catch (e) { console.error(e) }\r\n try { initEcharts43() } catch (e) { console.error(e) }\r\n try { initEcharts44() } catch (e) { console.error(e) }\r\n try { initEcharts45() } catch (e) { console.error(e) }\r\n try { initEcharts46() } catch (e) { console.error(e) }\r\n try { initEcharts47() } catch (e) { console.error(e) }\r\n try { initEcharts48() } catch (e) { console.error(e) }\r\n try { initEcharts49() } catch (e) { console.error(e) }\r\n try { initEcharts50() } catch (e) { console.error(e) }\r\n try { initEcharts51() } catch (e) { console.error(e) }\r\n try { initEcharts52() } catch (e) { console.error(e) }\r\n try { initEcharts53() } catch (e) { console.error(e) }\r\n try { initEcharts54() } catch (e) { console.error(e) }\r\n try { initEcharts55() } catch (e) { console.error(e) }\r\n try { initEcharts56() } catch (e) { console.error(e) }\r\n try { initEcharts57() } catch (e) { console.error(e) }\r\n try { initEcharts58() } catch (e) { console.error(e) }\r\n try { initEcharts59() } catch (e) { console.error(e) }\r\n try { initEcharts60() } catch (e) { console.error(e) }\r\n try { initEcharts61() } catch (e) { console.error(e) }\r\n try { initEcharts62() } catch (e) { console.error(e) }\r\n try { initEcharts63() } catch (e) { console.error(e) }\r\n try { initEcharts64() } catch (e) { console.error(e) }\r\n try { initEcharts65() } catch (e) { console.error(e) }\r\n try { initEcharts66() } catch (e) { console.error(e) }\r\n try { initEcharts67() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummary\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRatePre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRatePre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\'\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\'\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\'\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\'\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRateTrend\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10Pre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10Pre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentTop10AppCompany\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentTop10AppCompanyPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateTop10AppCompany\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateTop10AppCompanyPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10In2OutPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10In2OutPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY server_super_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY server_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY server_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3In2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyZAPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCIn2Outomapnty\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3In2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondeAppTrafficTop5ProvinceIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10Out2InPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10Out2InPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10In2OutPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10In2OutPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3In2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10Out2InPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10Out2InPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3Out2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3Out2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondeAppTrafficTop5ProvinceOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY server_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY server_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3Out2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(received_bytes) AS ingress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(received_bytes) AS egress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXA\"\r\n }\r\n ]\r\n}', 1, '2022-06-29 17:27:02', 1, '2022-06-29 17:27:08', NULL); -INSERT INTO `report_category` VALUES (7, 'IDC服务提供商报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IDC服务提供商${Provider}质量监测报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IDC服务提供商${Provider}质量监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 IDC ${Provider}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 域外访问域内${Provider}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 域内访问域外的${Provider}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 IDC访问各省份${Provider}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 IDC访问各省份${Provider}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问IDC ${Provider}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问IDC ${Provider}服务的Top 10 省份响应流量分布 </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 IDC访问省内${Provider}服务的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 IDC访问省内${Provider}服务的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问IDC ${Provider}服务的Top 10 省内地区请求流量分布 </div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问IDC ${Provider}服务的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n \r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问IDC 应用服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n \r\n // 省外访问省内服${Provider}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${Provider}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${Provider}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${Provider}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${Provider}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${Provider}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${Provider}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${Provider}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${Provider}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${Provider}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${Provider}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${Provider}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外${Provider}服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${Provider}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内${Provider}服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${Provider}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外${Provider}服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${Provider}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内${Provider}服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${Provider}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"queryParam\":[{\r\n \"key\":\"Provider\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.provider\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"dataset\": [\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app_company IN (\'${Provider}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app_company IN (\'${Provider}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app_company IN (\'${Provider}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app_company IN (\'${Provider}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time <${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}\r\n', 1, '2022-08-31 09:43:36', 1, '2022-08-31 09:43:39', NULL); -INSERT INTO `report_category` VALUES (8, 'IDC应用程序报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IDC应用程序${overviewApp}报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IDC服务提供商${overviewApp}质量监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 IDC ${overviewApp}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 域外访问域内${overviewApp}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 域内访问域外的${overviewApp}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 IDC访问各省份${overviewApp}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 IDC访问各省份${overviewApp}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问IDC ${overviewApp}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问IDC ${overviewApp}服务的Top 10 省份响应流量分布 </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 IDC访问省内${overviewApp}服务的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 IDC访问省内${overviewApp}服务的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问IDC ${overviewApp}服务的Top 10 省内地区请求流量分布 </div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问IDC ${overviewApp}服务的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n \r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问IDC 应用服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n \r\n // 省外访问省内服${overviewApp}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${overviewApp}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${overviewApp}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${overviewApp}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${overviewApp}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${overviewApp}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${overviewApp}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${overviewApp}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${overviewApp}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${overviewApp}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${overviewApp}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${overviewApp}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外${overviewApp}服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${overviewApp}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内${overviewApp}服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${overviewApp}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外${overviewApp}服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${overviewApp}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内${overviewApp}服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${overviewApp}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"queryParam\":[{\r\n \"key\":\"overviewApp\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.overviewApp\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"dataset\": [\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app IN (\'${overviewApp}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app IN (\'${overviewApp}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time <${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}\r\n', 1, '2022-10-18 22:49:25', 1, '2022-10-18 22:49:32', NULL); -INSERT INTO `report_category` VALUES (11, '出入口应用程序报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>出入口${overviewApp}应用程序报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">出入口${overviewApp}应用程序报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 出入口${overviewApp}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 省外访问省内${overviewApp}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 省内访问省外的${overviewApp}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 省内访问省外${overviewApp}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 省内访问省外${overviewApp}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 省外访问省内${overviewApp}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 省外访问省内${overviewApp}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 省内访问省外${overviewApp}服务的Top 10 省内地区的请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 省内访问省外${overviewApp}服务的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省外访问省内${overviewApp}服务的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省外访问省内${overviewApp}服务的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n<div class=\"header2\">四.链路方向流量构成</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas42\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图12 省内访问省外${overviewApp}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas49\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas50\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas51\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas52\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas53\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas54\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange9\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange20\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange20\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图13 省内访问省外${overviewApp}各链路Top5 省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas55\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图14 省外访问省内${overviewApp}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas62\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas63\" ></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas64\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas65\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas \" id=\"canvas66\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas67\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange11\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange22\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange22\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图15 省外访问省内${overviewApp}各链路Top5 省份流量占比</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n // xxx服务总流量 (xxxService traffic total)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前一周期(Pre 1st xxxService traffic total)\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期(Pre 2st xxxService traffic total)\r\n var pre2ndxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 省外访问省内服${overviewApp}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${overviewApp}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${overviewApp}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${overviewApp}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量情况\r\n // 省外访问省内${overviewApp}服务的服务质量\r\n // TCP会话创建延迟(xxxService Out2in TCP)\r\n var xxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in TCP)\r\n var pre1stxxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService Out2in retrans packets)\r\n var xxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in retrans packets)\r\n var pre1stxxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 省内访问省外${overviewApp}的服务质量\r\n // TCP会话创建延迟(xxxService In2out TCP)\r\n var xxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out TCP)\r\n var pre1stxxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService In2out retrans packets)\r\n var xxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out retrans packets)\r\n var pre1stxxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${overviewApp}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${overviewApp}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${overviewApp}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${overviewApp}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${overviewApp}服务)\r\n var regionIn2outSentTrafficBytesTop10 = [\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${overviewApp}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIn2outReceivedTrafficBytesTop10 = [\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionAZReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionAZReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionAZReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${overviewApp}服务)\r\n var regionOut2inSentTrafficBytesTop10 = [\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${overviewApp}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionOut2inReceivedTrafficBytesTop10 = [\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1 ${overviewApp}服务省内访问省外\r\n var linkDirectionTrafficIn2Out = [\r\n <#if linkDirectionTrafficIn2Out??>\r\n <#list linkDirectionTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 各链路Top5指标流量占比\r\n // 上行链路总流量统计\r\n var linkEgressTrafficIn2Out = [\r\n <#if linkEgressTrafficIn2Out??>\r\n <#list linkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficIn2Out = [\r\n <#if pre1stLinkEgressTrafficIn2Out??>\r\n <#list pre1stLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficIn2Out = [\r\n <#if pre2ndLinkEgressTrafficIn2Out??>\r\n <#list pre2ndLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficIn2Out = [\r\n <#if linkIngressTrafficIn2Out??>\r\n <#list linkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficIn2Out = [\r\n <#if pre1stLinkIngressTrafficIn2Out??>\r\n <#list pre1stLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficIn2Out = [\r\n <#if pre2ndLinkIngressTrafficIn2Out??>\r\n <#list pre2ndLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 省外访问省内\r\n var linkDirectionTrafficOut2In = [\r\n <#if linkDirectionTrafficOut2In??>\r\n <#list linkDirectionTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n // 上行链路总流量统计\r\n // 各链路上行总流量-本周期\r\n var linkEgressTrafficOut2In = [\r\n <#if linkEgressTrafficOut2In??>\r\n <#list linkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficOut2In = [\r\n <#if pre1stLinkEgressTrafficOut2In??>\r\n <#list pre1stLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficOut2In = [\r\n <#if pre2ndLinkEgressTrafficOut2In??>\r\n <#list pre2ndLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficOut2In = [\r\n <#if linkIngressTrafficOut2In??>\r\n <#list linkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficOut2In = [\r\n <#if pre1stLinkIngressTrafficOut2In??>\r\n <#list pre1stLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficOut2In = [\r\n <#if pre2ndLinkIngressTrafficOut2In??>\r\n <#list pre2ndLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if linkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list linkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if linkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list linkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外douyin服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外douyin服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内douyin服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内douyin服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外douyin服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData4 = regionIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2outSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外douyin服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData10 = regionIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionAZReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内douyin服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData5 = regionOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内douyin服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData11 = regionOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n // 省内访问省外\r\n function initEcharts42 () {\r\n var Data42 = []\r\n var Links42 = []\r\n linkDirectionTrafficIn2Out.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data42.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links42 = linkDirectionTrafficIn2Out.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data42 = Array.from(new Set(Data42))\r\n Data42 = Data42.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas42\')\r\n sankeyOption.series[0].data = Data42\r\n sankeyOption.series[0].links = Links42\r\n myChart.setOption(sankeyOption)\r\n }\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts49 () {\r\n var province49 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province49, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXN, pre1stLinkEgressTrafficTopNProvinceIn2OutXN, pre2ndLinkEgressTrafficTopNProvinceIn2OutXN, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas49\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts50 () {\r\n var province50 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province50, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutTY, pre1stLinkEgressTrafficTopNProvinceIn2OutTY, pre2ndLinkEgressTrafficTopNProvinceIn2OutTY, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas50\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts51 () {\r\n var province51 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province51, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXA, pre1stLinkEgressTrafficTopNProvinceIn2OutXA, pre2ndLinkEgressTrafficTopNProvinceIn2OutXA, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas51\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts52 () {\r\n var province52 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province52, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXN, pre1stLinkIngressTrafficTopNProvinceIn2OutXN, pre2ndLinkIngressTrafficTopNProvinceIn2OutXN, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n\r\n var myChart = initEchartsInstance(\'canvas52\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts53 () {\r\n var province53 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province53, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutTY, pre1stLinkIngressTrafficTopNProvinceIn2OutTY, pre2ndLinkIngressTrafficTopNProvinceIn2OutTY, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas53\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts54 () {\r\n var province54 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province54, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXA, pre1stLinkIngressTrafficTopNProvinceIn2OutXA, pre2ndLinkIngressTrafficTopNProvinceIn2OutXA, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas54\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 省外访问省内\r\n function initEcharts55 () {\r\n var Data55 = []\r\n var Links55 = []\r\n linkDirectionTrafficOut2In.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data55.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links55 = linkDirectionTrafficOut2In.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data55 = Array.from(new Set(Data55))\r\n Data55 = Data55.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas55\')\r\n sankeyOption.series[0].data = Data55\r\n sankeyOption.series[0].links = Links55\r\n myChart.setOption(sankeyOption)\r\n }\r\n\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts62 () {\r\n var province62 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province62, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXN, pre1stLinkEgressTrafficTopNProvinceOut2InXN, pre2ndLinkEgressTrafficTopNProvinceOut2InXN, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas62\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts63 () {\r\n var province63 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province63, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InTY, pre1stLinkEgressTrafficTopNProvinceOut2InTY, pre2ndLinkEgressTrafficTopNProvinceOut2InTY, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas63\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts64 () {\r\n var province64 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province64, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXA, pre1stLinkEgressTrafficTopNProvinceOut2InXA, pre2ndLinkEgressTrafficTopNProvinceOut2InXA, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas64\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts65 () {\r\n var province65 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province65, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXN, pre1stLinkIngressTrafficTopNProvinceOut2InXN, pre2ndLinkIngressTrafficTopNProvinceOut2InXN, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas65\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts66 () {\r\n var province66 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province66, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InTY, pre1stLinkIngressTrafficTopNProvinceOut2InTY, pre2ndLinkIngressTrafficTopNProvinceOut2InTY, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas66\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts67 () {\r\n var province67 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province67, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXA, pre1stLinkIngressTrafficTopNProvinceOut2InXA, pre2ndLinkIngressTrafficTopNProvinceOut2InXA, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas67\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts42() } catch (e) { console.error(e) }\r\n try { initEcharts49() } catch (e) { console.error(e) }\r\n try { initEcharts50() } catch (e) { console.error(e) }\r\n try { initEcharts51() } catch (e) { console.error(e) }\r\n try { initEcharts52() } catch (e) { console.error(e) }\r\n try { initEcharts53() } catch (e) { console.error(e) }\r\n try { initEcharts54() } catch (e) { console.error(e) }\r\n try { initEcharts55() } catch (e) { console.error(e) }\r\n try { initEcharts62() } catch (e) { console.error(e) }\r\n try { initEcharts63() } catch (e) { console.error(e) }\r\n try { initEcharts64() } catch (e) { console.error(e) }\r\n try { initEcharts65() } catch (e) { console.error(e) }\r\n try { initEcharts66() } catch (e) { console.error(e) }\r\n try { initEcharts67() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>', '{\r\n \"queryParam\":[{\r\n \"key\":\"overviewApp\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.overviewApp\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app IN (\'${overviewApp}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app IN (\'${overviewApp}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(received_bytes) AS ingress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(received_bytes) AS egress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXA\"\r\n }\r\n ]\r\n}', 1, '2022-10-18 23:00:27', 1, '2022-10-18 23:00:34', NULL); -INSERT INTO `report_category` VALUES (12, 'Application Report', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>Application Report-${overviewApp}</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">Application Report-${overviewApp}<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\"></div>\r\n</div>\r\n<div class=\"header2\">1.Network Summary</div>\r\n<div class=\"header3\">1.1 Traffic Summary</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">Table1 Traffic Statistics</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">Avg Data Rate</th>\r\n <th class=\"table__th\">Min Data Rate</th>\r\n <th class=\"table__th\" style=\"width: 200px\">Quantiles of Data Rate</th>\r\n <th class=\"table__th\">Max Data Rate</th>\r\n <th class=\"table__th\" style=\"width: 130px\">Change of Avg Data Rate</th>\r\n <th class=\"table__th\">Throughput</th>\r\n <th class=\"table__th\" style=\"width: 150px\">Percentage of Overall Throughput</th>\r\n <th class=\"table__th\" style=\"width: 130px\">Change of Throughput</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">Fig 1. Bandwidth Trend</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">1.2 Network Performance Summary</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">Table 2. Sessions from External to Internal</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">NPM Metric</th>\r\n <th class=\"table__th\">Quantiles</th>\r\n <th class=\"table__th\">Max Value</th>\r\n <th class=\"table__th\">Avg Value</th>\r\n <th class=\"table__th\">Change of Avg Value</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP Connection Establish Latency</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">Packet Retrans</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">Table 3. Sessions from Internal to External</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">NPM Metric</th>\r\n <th class=\"table__th\">Quantiles</th>\r\n <th class=\"table__th\">Max Value</th>\r\n <th class=\"table__th\">Avg Value</th>\r\n <th class=\"table__th\">Change of Avg Value</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP Connection Establish Latency</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">Packet Retrans</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">2. Top Services</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">Fig 2. Top Domains by Percentage of Throughput</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">Fig 3. Top Protocols by Percentage of Throughput</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">3. Geographical Distribution</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">Data Ratio by Region</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Max Value</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Avg Value</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">Fig 4. Top 10 Regions by Request Traffic from Internal to External</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">Data Ratio by Region</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Max Value</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Avg Value</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">Fig 5. Top 10 Regions by Response Traffic from Internal to External</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">Data Ratio by Region</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Max Value</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Avg Value</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">Fig 6. Top 10 Regions by Request Traffic from External to Internal</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">Data Ratio by Region</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Max Value</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Avg Value</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">Fig 7. Top 10 Regions by Response Traffic from External to Internal</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n // xxx服务总流量 (xxxService traffic total)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前一周期(Pre 1st xxxService traffic total)\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期(Pre 2st xxxService traffic total)\r\n var pre2ndxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 省外访问省内服${overviewApp}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${overviewApp}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${overviewApp}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${overviewApp}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量情况\r\n // 省外访问省内${overviewApp}服务的服务质量\r\n // TCP会话创建延迟(xxxService Out2in TCP)\r\n var xxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in TCP)\r\n var pre1stxxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService Out2in Retrans packets)\r\n var xxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in Retrans packets)\r\n var pre1stxxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 省内访问省外${overviewApp}的服务质量\r\n // TCP会话创建延迟(xxxService In2out TCP)\r\n var xxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out TCP)\r\n var pre1stxxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService In2out Retrans packets)\r\n var xxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out Retrans packets)\r\n var pre1stxxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain_sld:\"${getFromObj(d,\'domain_sld\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${overviewApp}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 省内访问省外${overviewApp}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // Top 10省份流量分布(省外访问省内${overviewApp}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 省外访问省内${overviewApp}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'Request Traffic\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'Period-over-Period Change\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'Request Traffic\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'Period-over-Period Change\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'Response Traffic\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'Period-over-Period Change\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'Response Traffic\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'Period-over-Period Change\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外字节跳动服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP10省份Response Traffic分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内字节跳动服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务TOP 10省份Response Traffic分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n myChart.setOption(option)\r\n }\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain_sld === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain_sld !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain_sld || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n\r\n\r\n\r\n</body></html>\r\n', '{\r\n \"queryParam\":[{\r\n \"key\":\"overviewApp\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.overviewApp\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT domain_sld AS domain_sld, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain_sld) AND (app IN (\'${overviewApp}\')) GROUP BY domain_sld ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain_sld, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain_sld) AND (app IN (\'${overviewApp}\')) GROUP BY domain_sld ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time <${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}', 1, '2022-12-30 18:06:26', 1, '2022-12-30 18:06:32', NULL); -INSERT INTO `report_category` VALUES (13, 'IDC域名报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IDC 域名${domain}报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IDC 域名${domain}报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 IDC ${domain}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 域外访问域内${domain}的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 域内访问域外的${domain}的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图2 IDC访问各省份${domain}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图3 IDC访问各省份${domain}的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 各省份访问IDC ${domain}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 各省份访问IDC ${domain}的Top 10 省份响应流量分布 </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 IDC访问省内${domain}的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 IDC访问省内${domain}的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 省内访问IDC ${domain}的Top 10 省内地区请求流量分布 </div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 省内访问IDC ${domain}的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n\r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n //前一周期\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期\r\n var pre2ndxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n\r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问IDC 应用服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n\r\n // 省外访问省内服${domain}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${domain}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${domain}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${domain}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 域外访问域内${domain}服务的服务质量\r\n //TCP会话创建延迟(xxxService Out2in TCP)\r\n var xxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in TCP)\r\n var pre1stxxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService Out2in loss packets)\r\n var xxxServiceOut2inPacketRetrans = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in loss packets)\r\n var pre1stxxxServiceOut2inPacketRetrans = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_min\')}\r\n }\r\n // 域内访问域外${domain}的服务质量\r\n //TCP会话创建延迟(xxxService In2out TCP)\r\n var xxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out TCP)\r\n var pre1stxxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService In2out loss packets)\r\n var xxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out loss packets)\r\n var pre1stxxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${domain}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${domain}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${domain}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${domain}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${domain}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${domain}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${domain}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${domain}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外${domain}服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${domain}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内${domain}服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${domain}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外${domain}服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${domain}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内${domain}服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${domain}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"domain\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.domain\",\r\n \"labelType\":\"input\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}\r\n', 1, '2023-03-06 16:30:54', 1, '2023-03-06 16:30:59', NULL); -INSERT INTO `report_category` VALUES (14, 'IDC IP流量报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IP ${ip}流量报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IP (${ip})流量报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 ${ip}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 ${ip}为服务端的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 ${ip}为客户端的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"header3\">1.承载业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n<div class=\"header3\">2.访问业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas14\"></div>\r\n <div class=\"echarts__title\">图4 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas19\"></div>\r\n <div class=\"echarts__title\">图5 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问${ip}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问${ip}的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 ${ip}访问各省份的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 ${ip}访问各省份的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问${ip}的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问${ip}的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 ${ip}访问省内的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图13 ${ip}访问省内的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n\r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问IDC 应用服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n\r\n // 省外访问省内服${ip}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${ip}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${ip}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${ip}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytesAsServer = [\r\n <#if top10RelatedDomainBytesAsServer??>\r\n <#list top10RelatedDomainBytesAsServer as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n var top10RelatedDomainBytesAsClient = [\r\n <#if top10RelatedDomainBytesAsClient??>\r\n <#list top10RelatedDomainBytesAsClient as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytesAsServer = [\r\n <#if top10RelatedProtocolBytesAsServer??>\r\n <#list top10RelatedProtocolBytesAsServer as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n var top10RelatedProtocolBytesAsClient = [\r\n <#if top10RelatedProtocolBytesAsClient??>\r\n <#list top10RelatedProtocolBytesAsClient as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${ip}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ip}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${ip}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ip}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${ip}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ip}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${ip}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ip}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外字节跳动服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内字节跳动服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外字节跳动服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内字节跳动服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytesAsServer.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytesAsServer.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts14 () {\r\n var total14 = top10RelatedDomainBytesAsClient.find(b => b.domain === \'total\')\r\n if (total14) {\r\n var pieDomainData14 = []\r\n var businessDistributionDomainData14 = top10RelatedDomainBytesAsClient.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData14 = businessDistributionDomainData14.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total14.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData14.push({ name: \'other\', value: (total14.bytes - bytesAll) / total14.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData14\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytesAsServer.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytesAsServer.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n function initEcharts19 () {\r\n var total19 = top10RelatedProtocolBytesAsClient.find(b => b.l7_protocol === \'total\')\r\n if (total19) {\r\n var pieDomainData19 = []\r\n var businessDistributionDomainData19 = top10RelatedProtocolBytesAsClient.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData19 = businessDistributionDomainData19.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total19.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData19.push({ name: \'other\', value: (total19.bytes - bytesAll) / total19.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData19\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"queryParam\":[{\r\n \"key\":\"ip\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.ip\",\r\n \"labelType\":\"input\"\r\n }],\r\n \"dataset\":[\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcpAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcpAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetransAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetransAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcpAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcpAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetransAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetransAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (server_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (server_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (server_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (server_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (client_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (client_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (client_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (client_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}', 1, '2023-03-09 09:37:46', 1, '2023-03-09 09:37:49', NULL); -INSERT INTO `report_category` VALUES (15, '出入口域名报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>出入口域名${domain}报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">出入口域名${domain}报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 出入口${domain}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 省外访问省内${domain}的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 省内访问省外的${domain}的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图2 省内访问省外${domain}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图3 省内访问省外${domain}的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 省外访问省内${domain}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 省外访问省内${domain}的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 省内访问省外${domain}的Top 10 省内地区的请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 省内访问省外${domain}的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 省外访问省内${domain}的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 省外访问省内${domain}的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n<div class=\"header2\">三.链路方向流量构成</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas42\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图10 省内访问省外${domain}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas49\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas50\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas51\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas52\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas53\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas54\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange9\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange20\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange20\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图11 省内访问省外${domain}各链路Top5 省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas55\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图12 省外访问省内${domain}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas62\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas63\" ></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas64\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas65\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas \" id=\"canvas66\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas67\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange11\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange22\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange22\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图13 省外访问省内${domain}各链路Top5 省份流量占比</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n // xxx服务总流量 (xxxService traffic total)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前一周期(Pre 1st xxxService traffic total)\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期(Pre 2st xxxService traffic total)\r\n var pre2ndxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 省外访问省内服${domain}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${domain}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${domain}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${domain}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量情况\r\n // 省外访问省内${domain}服务的服务质量\r\n // TCP会话创建延迟(xxxService Out2in TCP)\r\n var xxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in TCP)\r\n var pre1stxxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService Out2in loss packets)\r\n var xxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in loss packets)\r\n var pre1stxxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 省内访问省外${domain}的服务质量\r\n // TCP会话创建延迟(xxxService In2out TCP)\r\n var xxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out TCP)\r\n var pre1stxxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService In2out loss packets)\r\n var xxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out loss packets)\r\n var pre1stxxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${domain}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${domain}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${domain}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${domain}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${domain}服务)\r\n var regionIn2outSentTrafficBytesTop10 = [\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${domain}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIn2outReceivedTrafficBytesTop10 = [\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionAZReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionAZReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionAZReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${domain}服务)\r\n var regionOut2inSentTrafficBytesTop10 = [\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${domain}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionOut2inReceivedTrafficBytesTop10 = [\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1 ${domain}服务省内访问省外\r\n var linkDirectionTrafficIn2Out = [\r\n <#if linkDirectionTrafficIn2Out??>\r\n <#list linkDirectionTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 各链路Top5指标流量占比\r\n // 上行链路总流量统计\r\n var linkEgressTrafficIn2Out = [\r\n <#if linkEgressTrafficIn2Out??>\r\n <#list linkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficIn2Out = [\r\n <#if pre1stLinkEgressTrafficIn2Out??>\r\n <#list pre1stLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficIn2Out = [\r\n <#if pre2ndLinkEgressTrafficIn2Out??>\r\n <#list pre2ndLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficIn2Out = [\r\n <#if linkIngressTrafficIn2Out??>\r\n <#list linkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficIn2Out = [\r\n <#if pre1stLinkIngressTrafficIn2Out??>\r\n <#list pre1stLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficIn2Out = [\r\n <#if pre2ndLinkIngressTrafficIn2Out??>\r\n <#list pre2ndLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 省外访问省内\r\n var linkDirectionTrafficOut2In = [\r\n <#if linkDirectionTrafficOut2In??>\r\n <#list linkDirectionTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n // 上行链路总流量统计\r\n // 各链路上行总流量-本周期\r\n var linkEgressTrafficOut2In = [\r\n <#if linkEgressTrafficOut2In??>\r\n <#list linkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficOut2In = [\r\n <#if pre1stLinkEgressTrafficOut2In??>\r\n <#list pre1stLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficOut2In = [\r\n <#if pre2ndLinkEgressTrafficOut2In??>\r\n <#list pre2ndLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficOut2In = [\r\n <#if linkIngressTrafficOut2In??>\r\n <#list linkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficOut2In = [\r\n <#if pre1stLinkIngressTrafficOut2In??>\r\n <#list pre1stLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficOut2In = [\r\n <#if pre2ndLinkIngressTrafficOut2In??>\r\n <#list pre2ndLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if linkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list linkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if linkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list linkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外baidu.com服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外baidu.com服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内baidu.com服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内baidu.com服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外baidu.com服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData4 = regionIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2outSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外baidu.com服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData10 = regionIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionAZReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内baidu.com服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData5 = regionOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内baidu.com服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData11 = regionOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n // 省内访问省外\r\n function initEcharts42 () {\r\n var Data42 = []\r\n var Links42 = []\r\n linkDirectionTrafficIn2Out.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data42.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links42 = linkDirectionTrafficIn2Out.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data42 = Array.from(new Set(Data42))\r\n Data42 = Data42.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas42\')\r\n sankeyOption.series[0].data = Data42\r\n sankeyOption.series[0].links = Links42\r\n myChart.setOption(sankeyOption)\r\n }\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts49 () {\r\n var province49 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province49, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXN, pre1stLinkEgressTrafficTopNProvinceIn2OutXN, pre2ndLinkEgressTrafficTopNProvinceIn2OutXN, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas49\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts50 () {\r\n var province50 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province50, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutTY, pre1stLinkEgressTrafficTopNProvinceIn2OutTY, pre2ndLinkEgressTrafficTopNProvinceIn2OutTY, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas50\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts51 () {\r\n var province51 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province51, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXA, pre1stLinkEgressTrafficTopNProvinceIn2OutXA, pre2ndLinkEgressTrafficTopNProvinceIn2OutXA, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas51\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts52 () {\r\n var province52 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province52, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXN, pre1stLinkIngressTrafficTopNProvinceIn2OutXN, pre2ndLinkIngressTrafficTopNProvinceIn2OutXN, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n\r\n var myChart = initEchartsInstance(\'canvas52\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts53 () {\r\n var province53 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province53, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutTY, pre1stLinkIngressTrafficTopNProvinceIn2OutTY, pre2ndLinkIngressTrafficTopNProvinceIn2OutTY, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas53\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts54 () {\r\n var province54 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province54, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXA, pre1stLinkIngressTrafficTopNProvinceIn2OutXA, pre2ndLinkIngressTrafficTopNProvinceIn2OutXA, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas54\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 省外访问省内\r\n function initEcharts55 () {\r\n var Data55 = []\r\n var Links55 = []\r\n linkDirectionTrafficOut2In.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data55.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links55 = linkDirectionTrafficOut2In.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data55 = Array.from(new Set(Data55))\r\n Data55 = Data55.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas55\')\r\n sankeyOption.series[0].data = Data55\r\n sankeyOption.series[0].links = Links55\r\n myChart.setOption(sankeyOption)\r\n }\r\n\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts62 () {\r\n var province62 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province62, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXN, pre1stLinkEgressTrafficTopNProvinceOut2InXN, pre2ndLinkEgressTrafficTopNProvinceOut2InXN, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas62\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts63 () {\r\n var province63 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province63, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InTY, pre1stLinkEgressTrafficTopNProvinceOut2InTY, pre2ndLinkEgressTrafficTopNProvinceOut2InTY, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas63\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts64 () {\r\n var province64 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province64, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXA, pre1stLinkEgressTrafficTopNProvinceOut2InXA, pre2ndLinkEgressTrafficTopNProvinceOut2InXA, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas64\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts65 () {\r\n var province65 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province65, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXN, pre1stLinkIngressTrafficTopNProvinceOut2InXN, pre2ndLinkIngressTrafficTopNProvinceOut2InXN, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas65\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts66 () {\r\n var province66 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province66, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InTY, pre1stLinkIngressTrafficTopNProvinceOut2InTY, pre2ndLinkIngressTrafficTopNProvinceOut2InTY, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas66\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts67 () {\r\n var province67 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province67, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXA, pre1stLinkIngressTrafficTopNProvinceOut2InXA, pre2ndLinkIngressTrafficTopNProvinceOut2InXA, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas67\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts42() } catch (e) { console.error(e) }\r\n try { initEcharts49() } catch (e) { console.error(e) }\r\n try { initEcharts50() } catch (e) { console.error(e) }\r\n try { initEcharts51() } catch (e) { console.error(e) }\r\n try { initEcharts52() } catch (e) { console.error(e) }\r\n try { initEcharts53() } catch (e) { console.error(e) }\r\n try { initEcharts54() } catch (e) { console.error(e) }\r\n try { initEcharts55() } catch (e) { console.error(e) }\r\n try { initEcharts62() } catch (e) { console.error(e) }\r\n try { initEcharts63() } catch (e) { console.error(e) }\r\n try { initEcharts64() } catch (e) { console.error(e) }\r\n try { initEcharts65() } catch (e) { console.error(e) }\r\n try { initEcharts66() } catch (e) { console.error(e) }\r\n try { initEcharts67() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n</html>', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"domain\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.domain\",\r\n \"labelType\":\"input\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, ingress_link_direction AS ingress_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(received_bytes) AS ingress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) AND notEmpty(ingress_link_direction) GROUP BY egress_link_direction, ingress_link_direction ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkDirectionTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, ingress_link_direction AS ingress_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(received_bytes) AS egress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) AND notEmpty(ingress_link_direction) GROUP BY egress_link_direction, ingress_link_direction ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkDirectionTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceOut2InXA\"\r\n }\r\n ]\r\n}', 1, '2023-03-08 15:16:57', 1, '2023-03-08 15:17:00', NULL); -INSERT INTO `report_category` VALUES (19, '出入口IP流量报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IP ${ip}流量报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IP (${ip})流量报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 ${ip}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 ${ip}为服务端的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 ${ip}为客户端的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"header3\">1.承载业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n<div class=\"header3\">2.访问业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas14\"></div>\r\n <div class=\"echarts__title\">图4 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas19\"></div>\r\n <div class=\"echarts__title\">图5 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问${ip}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问${ip}的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 ${ip}访问各省份的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 ${ip}访问各省份的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问${ip}的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问${ip}的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 ${ip}访问省内的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图13 ${ip}访问省内的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n\r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问IDC 应用服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n\r\n // 省外访问省内服${ip}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${ip}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${ip}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${ip}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytesAsServer = [\r\n <#if top10RelatedDomainBytesAsServer??>\r\n <#list top10RelatedDomainBytesAsServer as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n var top10RelatedDomainBytesAsClient = [\r\n <#if top10RelatedDomainBytesAsClient??>\r\n <#list top10RelatedDomainBytesAsClient as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytesAsServer = [\r\n <#if top10RelatedProtocolBytesAsServer??>\r\n <#list top10RelatedProtocolBytesAsServer as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n var top10RelatedProtocolBytesAsClient = [\r\n <#if top10RelatedProtocolBytesAsClient??>\r\n <#list top10RelatedProtocolBytesAsClient as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${ip}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ip}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${ip}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ip}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${ip}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ip}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${ip}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ip}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外字节跳动服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内字节跳动服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外字节跳动服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内字节跳动服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytesAsServer.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytesAsServer.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts14 () {\r\n var total14 = top10RelatedDomainBytesAsClient.find(b => b.domain === \'total\')\r\n if (total14) {\r\n var pieDomainData14 = []\r\n var businessDistributionDomainData14 = top10RelatedDomainBytesAsClient.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData14 = businessDistributionDomainData14.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total14.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData14.push({ name: \'other\', value: (total14.bytes - bytesAll) / total14.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData14\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytesAsServer.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytesAsServer.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n function initEcharts19 () {\r\n var total19 = top10RelatedProtocolBytesAsClient.find(b => b.l7_protocol === \'total\')\r\n if (total19) {\r\n var pieDomainData19 = []\r\n var businessDistributionDomainData19 = top10RelatedProtocolBytesAsClient.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData19 = businessDistributionDomainData19.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total19.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData19.push({ name: \'other\', value: (total19.bytes - bytesAll) / total19.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData19\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"queryParam\":[{\r\n \"key\":\"ip\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.ip\",\r\n \"labelType\":\"input\"\r\n }],\r\n \"dataset\":[\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcpAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcpAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetransAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetransAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcpAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcpAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetransAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetransAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (server_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (server_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (server_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (server_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (client_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (client_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (client_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (client_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}', 1, '2023-03-09 10:34:55', 1, '2023-03-09 10:34:59', NULL); -INSERT INTO `report_category` VALUES (20, 'IDC IP标签报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IP标签(${ipTag})报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IP标签(${ipTag})报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 ${ipTag}IP整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 整体服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table__title\">表3 Top10 APP 服务质量</div>\r\n<table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th rowspan=\"2\" class=\"table__th\">APP</th>\r\n <th rowspan=\"2\" class=\"table__th\">流量占比</th>\r\n <th colspan=\"3\" class=\"table__th\">TCP会话延迟(ms)</th>\r\n <th colspan=\"3\" class=\"table__th\">重传率</th>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <#if xxxIPTagsTop10AppBytes??>\r\n <#list xxxIPTagsTop10AppBytes as val>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">${getFromObj(val,\'app_company\',\'string\')}</td>\r\n <td class=\"table__td\">${proportion(getFromObj(val,\'bytes\',\'number\'),getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'))}</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, pre1stxxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, pre1stxxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </#list>\r\n </#if>\r\n </tbody>\r\n</table>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"header3\">1.承载业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 APP流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 域名流量占比</div>\r\n </span>\r\n</div>\r\n<div class=\"header3\">2.访问业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas14\"></div>\r\n <div class=\"echarts__title\">图4 APP流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas19\"></div>\r\n <div class=\"echarts__title\">图5 域名流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问${ipTag}IP的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问${ipTag}IP的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 ${ipTag}IP访问各省份的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 ${ipTag}IP访问各省份的Top 10 省份响应流量分布 </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问${ipTag}IP的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问${ipTag}IP的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 ${ipTag}IP访问省内的Top 10 省内地区请求流量分布 </div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图13 ${ipTag}IP访问省内的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n\r\n // 省外访问省内服字节跳动的服务质量(xxxServiceOut2inTrafficTotal)\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外字节跳动服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n\r\n // 省外访问省内服${ipTag}的服务质量\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${ipTag}服务流量\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // ${ipTag}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${ipTag}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量概况\r\n // 1.2.1\r\n var appCompanyTrafficTop10 = [\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2.2 Top 10 App服务质量\r\n // Top 10 App服务质量 TCP会话创建延迟\r\n var xxxIPTagsTop10AppTCP = {\r\n <#if xxxIPTagsTop10AppTCP??>\r\n <#list xxxIPTagsTop10AppTCP as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.2 前一周期Top10 App Company TCP会话创建延迟\r\n var pre1stxxxIPTagsTop10AppTCP = {\r\n <#if pre1stxxxIPTagsTop10AppTCP??>\r\n <#list pre1stxxxIPTagsTop10AppTCP as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.3 重传率\r\n var xxxIPTagsTop10AppPacketRetrans = {\r\n <#if xxxIPTagsTop10AppPacketRetrans??>\r\n <#list xxxIPTagsTop10AppPacketRetrans as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.4 前一周期重传率\r\n var pre1stxxxIPTagsTop10AppPacketRetrans = {\r\n <#if pre1stxxxIPTagsTop10AppPacketRetrans??>\r\n <#list pre1stxxxIPTagsTop10AppPacketRetrans as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n /* 2 业务分布 */\r\n var xxxIPTagsTop10AppBytes = [\r\n <#if xxxIPTagsTop10AppBytes??>\r\n <#list xxxIPTagsTop10AppBytes as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 承载业务分布\r\n // APP流量占比\r\n var Top10RelatedAppBytesAsServer = [\r\n <#if Top10RelatedAppBytesAsServer??>\r\n <#list Top10RelatedAppBytesAsServer as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 域名流量占比\r\n var Top10RelatedDomainBytesAsServer = [\r\n <#if Top10RelatedDomainBytesAsServer??>\r\n <#list Top10RelatedDomainBytesAsServer as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 访问业务分布\r\n // APP流量占比\r\n var Top10RelatedAppBytesAsClient = [\r\n <#if Top10RelatedAppBytesAsClient??>\r\n <#list Top10RelatedAppBytesAsClient as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 域名流量占比\r\n var Top10RelatedDomainBytesAsClient = [\r\n <#if Top10RelatedDomainBytesAsClient??>\r\n <#list Top10RelatedDomainBytesAsClient as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${ipTag}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ipTag}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${ipTag}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ipTag}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${ipTag}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ipTag}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${ipTag}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ipTag}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外${ipTag}服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${ipTag}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内${ipTag}服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${ipTag}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外${ipTag}服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${ipTag}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内${ipTag}服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${ipTag}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = Top10RelatedAppBytesAsServer.find(b => b.app_company === \'total\')\r\n if (total13) {\r\n var pieAppData13 = []\r\n var businessDistributionAppData13 = Top10RelatedAppBytesAsServer.filter(t => t.app_company !== \'total\')\r\n var bytesAll = 0\r\n pieAppData13 = businessDistributionAppData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieAppData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieAppData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = Top10RelatedDomainBytesAsServer.find(b => b.domain === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = Top10RelatedDomainBytesAsServer.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n function initEcharts14 () {\r\n var total14 = Top10RelatedAppBytesAsClient.find(b => b.app_company === \'total\')\r\n if (total14) {\r\n var pieAppData14 = []\r\n var businessDistributionAppData14 = Top10RelatedAppBytesAsClient.filter(t => t.app_company !== \'total\')\r\n var bytesAll = 0\r\n pieAppData14 = businessDistributionAppData14.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total14.bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieAppData14.push({ name: \'other\', value: (total14.bytes - bytesAll) / total14.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieAppData14\r\n myChart.setOption(option)\r\n }\r\n function initEcharts19 () {\r\n var total19 = Top10RelatedDomainBytesAsClient.find(b => b.domain === \'total\')\r\n if (total19) {\r\n var pieDomainData19 = []\r\n var businessDistributionDomainData19 = Top10RelatedDomainBytesAsClient.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData19 = businessDistributionDomainData19.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total19.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData19.push({ name: \'other\', value: (total19.bytes - bytesAll) / total19.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData19\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"ipTag\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.ipTag\",\r\n \"labelType\": \"input\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company as app_company, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(establish_latency,0.5), 4) AS establish_latency_p50, ROUND(QUANTILE(establish_latency,0.9), 4) AS establish_latency_p90, ROUND(QUANTILE(establish_latency,0.99), 4) AS establish_latency_p99, ROUND(AVG(establish_latency), 4) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppTCP\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(establish_latency,0.5), 4) AS establish_latency_p50, ROUND(QUANTILE(establish_latency,0.9), 4) AS establish_latency_p90, ROUND(QUANTILE(establish_latency,0.99), 4) AS establish_latency_p99, ROUND(AVG(establish_latency), 4) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxIPTagsTop10AppTCP\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(pkt_retrans_percent,0.5), 4) as pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent,0.9), 4) as pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent,0.99), 4) as pkt_retrans_percent_p99, ROUND(AVG(pkt_retrans_percent), 4) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(pkt_retrans_percent,0.5), 4) as pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent,0.9), 4) as pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent,0.99), 4) as pkt_retrans_percent_p99, ROUND(AVG(pkt_retrans_percent), 4) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxIPTagsTop10AppPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedAppBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedDomainBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedAppBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedDomainBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}', 1, '2023-03-08 17:58:11', 1, '2023-03-08 17:58:15', NULL); -INSERT INTO `report_category` VALUES (21, '出入口 IP标签报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IP标签(${ipTag})报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IP标签(${ipTag})报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 ${ipTag}IP整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 整体服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table__title\">表3 Top10 APP 服务质量</div>\r\n<table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th rowspan=\"2\" class=\"table__th\">APP</th>\r\n <th rowspan=\"2\" class=\"table__th\">流量占比</th>\r\n <th colspan=\"3\" class=\"table__th\">TCP会话延迟(ms)</th>\r\n <th colspan=\"3\" class=\"table__th\">重传率</th>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <#if xxxIPTagsTop10AppBytes??>\r\n <#list xxxIPTagsTop10AppBytes as val>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">${getFromObj(val,\'app_company\',\'string\')}</td>\r\n <td class=\"table__td\">${proportion(getFromObj(val,\'bytes\',\'number\'),getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'))}</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, pre1stxxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, pre1stxxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </#list>\r\n </#if>\r\n </tbody>\r\n</table>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"header3\">1.承载业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 APP流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 域名流量占比</div>\r\n </span>\r\n</div>\r\n<div class=\"header3\">2.访问业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas14\"></div>\r\n <div class=\"echarts__title\">图4 APP流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas19\"></div>\r\n <div class=\"echarts__title\">图5 域名流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问${ipTag}IP的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问${ipTag}IP的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 ${ipTag}IP访问各省份的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 ${ipTag}IP访问各省份的Top 10 省份响应流量分布 </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问${ipTag}IP的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问${ipTag}IP的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 ${ipTag}IP访问省内的Top 10 省内地区请求流量分布 </div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图13 ${ipTag}IP访问省内的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n\r\n // 省外访问省内服字节跳动的服务质量(xxxServiceOut2inTrafficTotal)\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外字节跳动服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n\r\n // 省外访问省内服${ipTag}的服务质量\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${ipTag}服务流量\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // ${ipTag}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${ipTag}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量概况\r\n // 1.2.1\r\n var appCompanyTrafficTop10 = [\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2.2 Top 10 App服务质量\r\n // Top 10 App服务质量 TCP会话创建延迟\r\n var xxxIPTagsTop10AppTCP = {\r\n <#if xxxIPTagsTop10AppTCP??>\r\n <#list xxxIPTagsTop10AppTCP as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.2 前一周期Top10 App Company TCP会话创建延迟\r\n var pre1stxxxIPTagsTop10AppTCP = {\r\n <#if pre1stxxxIPTagsTop10AppTCP??>\r\n <#list pre1stxxxIPTagsTop10AppTCP as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.3 重传率\r\n var xxxIPTagsTop10AppPacketRetrans = {\r\n <#if xxxIPTagsTop10AppPacketRetrans??>\r\n <#list xxxIPTagsTop10AppPacketRetrans as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.4 前一周期重传率\r\n var pre1stxxxIPTagsTop10AppPacketRetrans = {\r\n <#if pre1stxxxIPTagsTop10AppPacketRetrans??>\r\n <#list pre1stxxxIPTagsTop10AppPacketRetrans as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n /* 2 业务分布 */\r\n var xxxIPTagsTop10AppBytes = [\r\n <#if xxxIPTagsTop10AppBytes??>\r\n <#list xxxIPTagsTop10AppBytes as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 承载业务分布\r\n // APP流量占比\r\n var Top10RelatedAppBytesAsServer = [\r\n <#if Top10RelatedAppBytesAsServer??>\r\n <#list Top10RelatedAppBytesAsServer as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 域名流量占比\r\n var Top10RelatedDomainBytesAsServer = [\r\n <#if Top10RelatedDomainBytesAsServer??>\r\n <#list Top10RelatedDomainBytesAsServer as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 访问业务分布\r\n // APP流量占比\r\n var Top10RelatedAppBytesAsClient = [\r\n <#if Top10RelatedAppBytesAsClient??>\r\n <#list Top10RelatedAppBytesAsClient as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 域名流量占比\r\n var Top10RelatedDomainBytesAsClient = [\r\n <#if Top10RelatedDomainBytesAsClient??>\r\n <#list Top10RelatedDomainBytesAsClient as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${ipTag}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ipTag}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${ipTag}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ipTag}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${ipTag}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ipTag}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${ipTag}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ipTag}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外${ipTag}服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${ipTag}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内${ipTag}服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${ipTag}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外${ipTag}服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${ipTag}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内${ipTag}服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${ipTag}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = Top10RelatedAppBytesAsServer.find(b => b.app_company === \'total\')\r\n if (total13) {\r\n var pieAppData13 = []\r\n var businessDistributionAppData13 = Top10RelatedAppBytesAsServer.filter(t => t.app_company !== \'total\')\r\n var bytesAll = 0\r\n pieAppData13 = businessDistributionAppData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieAppData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieAppData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = Top10RelatedDomainBytesAsServer.find(b => b.domain === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = Top10RelatedDomainBytesAsServer.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n function initEcharts14 () {\r\n var total14 = Top10RelatedAppBytesAsClient.find(b => b.app_company === \'total\')\r\n if (total14) {\r\n var pieAppData14 = []\r\n var businessDistributionAppData14 = Top10RelatedAppBytesAsClient.filter(t => t.app_company !== \'total\')\r\n var bytesAll = 0\r\n pieAppData14 = businessDistributionAppData14.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total14.bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieAppData14.push({ name: \'other\', value: (total14.bytes - bytesAll) / total14.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieAppData14\r\n myChart.setOption(option)\r\n }\r\n function initEcharts19 () {\r\n var total19 = Top10RelatedDomainBytesAsClient.find(b => b.domain === \'total\')\r\n if (total19) {\r\n var pieDomainData19 = []\r\n var businessDistributionDomainData19 = Top10RelatedDomainBytesAsClient.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData19 = businessDistributionDomainData19.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total19.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData19.push({ name: \'other\', value: (total19.bytes - bytesAll) / total19.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData19\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"ipTag\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.ipTag\",\r\n \"labelType\": \"input\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company as app_company, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(establish_latency,0.5), 4) AS establish_latency_p50, ROUND(QUANTILE(establish_latency,0.9), 4) AS establish_latency_p90, ROUND(QUANTILE(establish_latency,0.99), 4) AS establish_latency_p99, ROUND(AVG(establish_latency), 4) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppTCP\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(establish_latency,0.5), 4) AS establish_latency_p50, ROUND(QUANTILE(establish_latency,0.9), 4) AS establish_latency_p90, ROUND(QUANTILE(establish_latency,0.99), 4) AS establish_latency_p99, ROUND(AVG(establish_latency), 4) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxIPTagsTop10AppTCP\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(pkt_retrans_percent,0.5), 4) as pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent,0.9), 4) as pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent,0.99), 4) as pkt_retrans_percent_p99, ROUND(AVG(pkt_retrans_percent), 4) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(pkt_retrans_percent,0.5), 4) as pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent,0.9), 4) as pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent,0.99), 4) as pkt_retrans_percent_p99, ROUND(AVG(pkt_retrans_percent), 4) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND decoded_path IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxIPTagsTop10AppPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedAppBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedDomainBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedAppBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedDomainBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}', 1, '2023-03-08 17:58:55', 1, '2023-03-08 17:58:59', NULL); +INSERT INTO `report_category` VALUES (1, 'IDC租用方报告', '<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<#setting number_format=\"0.####\"/>\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <title>IDC${Tenant}服务质量监测报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IDC${Tenant}服务质量监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 IDC${Tenant}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 客户端访问IDC${Tenant}(Z-A)的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceZATcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceZATcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceZATcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceZATcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceZATcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceZATcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceZATcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceZAPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 IDC${Tenant}内容获取(A-Z)的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceAZTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceAZTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceAZTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceAZTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceAZTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceAZTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceAZTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceAZPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas12\"></div>\r\n <div class=\"echarts__title\">图2 相关APP流量占比</div>\r\n </div>\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图3 相关域名流量占比</div>\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图4 应用层协议流量占比</div>\r\n </div>\r\n <div class=\"echarts\"></div>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceZASentTrafficBytesTop10??>\r\n <#list provinceZASentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceZASentTrafficBytesTop10??>\r\n <#list provinceZASentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceZASentTrafficBytesTop10??>\r\n <#list provinceZASentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 IDC${Tenant}对外(省Z-A)服务能力的TOP10省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceZAReceivedTrafficBytesTop10??>\r\n <#list provinceZAReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceZAReceivedTrafficBytesTop10??>\r\n <#list provinceZAReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceZAReceivedTrafficBytesTop10??>\r\n <#list provinceZAReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 IDC${Tenant}对外(省Z-A)服务能力的TOP10省份响应流量分布</div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if Top3ProvinceAppTrafficBytesTotal??>\r\n <#list Top3ProvinceAppTrafficBytesTotal as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas21\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas22\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas23\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange1\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange7\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange7\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图7 IDC${Tenant}对外(省Z-A)提供服务TOP3省份的APP的流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if topAppCompanyProvinceTrafficBytesTotal??>\r\n <#list topAppCompanyProvinceTrafficBytesTotal as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas24\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas25\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas26\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange2\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange8\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange8\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图8 IDC${Tenant}对外(省 Z-A)提供服务TOP3 APP的各省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if regionZASentTrafficBytesTop10??>\r\n <#list provinceAZSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceAZSentTrafficBytesTop10??>\r\n <#list provinceAZSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceAZSentTrafficBytesTop10??>\r\n <#list provinceAZSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 IDC${Tenant}内容获取(省A-Z)服务能力的TOP10省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceAZReceivedTrafficBytesTop10??>\r\n <#list provinceAZReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceAZReceivedTrafficBytesTop10??>\r\n <#list provinceAZReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceAZReceivedTrafficBytesTop10??>\r\n <#list provinceAZReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 IDC${Tenant}内容获取(省A-Z)服务能力的TOP10省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionZASentTrafficBytesTop10??>\r\n <#list regionZASentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionZASentTrafficBytesTop10??>\r\n <#list regionZASentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionZASentTrafficBytesTop10??>\r\n <#list regionZASentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 IDC${Tenant}对内(地市Z-A)服务能力的TOP10省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionZAReceivedTrafficBytesTop10??>\r\n <#list regionZAReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionZAReceivedTrafficBytesTop10??>\r\n <#list regionZAReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionZAReceivedTrafficBytesTop10??>\r\n <#list regionZAReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 IDC${Tenant}对内(地市Z-A)服务能力的TOP10省内地区响应流量分布</div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if top3RegionAppTrafficBytesTotal??>\r\n <#list top3RegionAppTrafficBytesTotal as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas27\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas28\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas29\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange3\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange13\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange13\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图13 IDC${Tenant}对内(地市Z-A)服务能力的TOP3省内地区主要app流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if top3AppCompanyRegionTrafficBytesTotal??>\r\n <#list top3AppCompanyRegionTrafficBytesTotal as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas30\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas31\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas32\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange4\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange14\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange14\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图14 IDC${Tenant}对内(地市Z-A)服务能力的TOP3 APP的省内地区流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionAZSentTrafficBytesTop10??>\r\n <#list regionAZSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionAZSentTrafficBytesTop10??>\r\n <#list regionAZSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionAZSentTrafficBytesTop10??>\r\n <#list regionAZSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图15 IDC内容获取(地市A-Z)服务能力的TOP10省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionAZReceivedTrafficBytesTop10??>\r\n <#list regionAZReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionAZReceivedTrafficBytesTop10??>\r\n <#list regionAZReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionAZReceivedTrafficBytesTop10??>\r\n <#list regionAZReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图16 IDC内容获取(地市A-Z)服务能力的TOP10省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header2\">四.内容收敛比</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts echarts__bar-value\">\r\n <div class=\"echarts__canvas\" id=\"canvas19\"></div>\r\n <div class=\"echarts__title\">图17 租用方流量分布</div>\r\n </span>\r\n <span class=\"echarts echarts__bar-value\">\r\n <div class=\"echarts__canvas\" id=\"canvas20\"></div>\r\n <div class=\"echarts__title\">图18 租用方会话分布</div>\r\n </span>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas14\"></div>\r\n </div>\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas16\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas6\"></div>\r\n </div>\r\n <div class=\"echarts\"></div>\r\n</div>\r\n<div class=\"echarts__title echarts__line-and-bar-title\">图19 内容获取流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas15\"></div>\r\n </div>\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas17\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas7\"></div>\r\n </div>\r\n <div class=\"echarts\"></div>\r\n</div>\r\n<div class=\"echarts__title echarts__line-and-bar-title\">图20 内容获取会话分布</div>\r\n<script>\r\n /** 数据 begin */\r\n var timeZoneOffset = ${timeZoneOffset}\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var totalTraffic = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n // IDCxxx服务总流量 (xxxService traffic total)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前一周期(Pre 1st xxxService traffic total)\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期(Pre 2st xxxService traffic total)\r\n var pre2stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 客户端访问IDCxxx(Z-A)服务流量\r\n var xxxServiceZATrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceZATrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceZATrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceZATrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceZATrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceZATrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceZATrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceZATrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2stxxxServiceZATrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2stxxxServiceZATrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2stxxxServiceZATrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2stxxxServiceZATrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // IDCxxx对内(地市Z-A)服务省内地区流量(xxxService ZA region traffic total)\r\n var xxxServiceZARegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceZARegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceZARegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceZARegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceZARegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceZARegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceZARegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceZARegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2stxxxServiceZARegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2stxxxServiceZARegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2stxxxServiceZARegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2stxxxServiceZARegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // IDCxxx内容获取(A-Z)流量(xxxService AZ traffic total)\r\n var xxxServiceAZTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceAZTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceAZTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceAZTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceAZTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceAZTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceAZTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceAZTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2stxxxServiceAZTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2stxxxServiceAZTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2stxxxServiceAZTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2stxxxServiceAZTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // IDC内容获取(地市A-Z)服务能力省内地区流量(xxxService AZ region traffic total)\r\n var xxxServiceAZRegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceAZRegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceAZRegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceAZRegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceAZRegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceAZRegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceAZRegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceAZRegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2stxxxServiceAZRegionTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2stxxxServiceAZRegionTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2stxxxServiceAZRegionTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2stxxxServiceAZRegionTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // IDCxxx服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // xxx服务当日流量变化曲线(xxxService traffic changing curve)\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000}, rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 2 业务分部 */\r\n // 相关APP流量占比(TOP 10 Related App bytes)\r\n var top10RelatedAppBytes = [\r\n <#if top10RelatedAppBytes??>\r\n <#list top10RelatedAppBytes as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // IDCxxx对外(省Z-A)服务能力TOP10请求流量分布(Province ZA Sent Traffic Bytes Top 10)\r\n var provinceZASentTrafficBytesTop10 = [\r\n <#if provinceZASentTrafficBytesTop10??>\r\n <#list provinceZASentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stProvinceZASentTrafficBytesTop10 = [\r\n <#if pre1stProvinceZASentTrafficBytesTop10??>\r\n <#list pre1stProvinceZASentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stProvinceZASentTrafficBytesTop10 = [\r\n <#if pre2stProvinceZASentTrafficBytesTop10??>\r\n <#list pre2stProvinceZASentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // IDCxxx对外(省Z-A)服务能力TOP10响应流量分布(Province ZA Received Traffic Bytes Top 10)\r\n var provinceZAReceivedTrafficBytesTop10 = [\r\n <#if provinceZAReceivedTrafficBytesTop10??>\r\n <#list provinceZAReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stProvinceZAReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceZAReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceZAReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stProvinceZAReceivedTrafficBytesTop10 = [\r\n <#if pre2stProvinceZAReceivedTrafficBytesTop10??>\r\n <#list pre2stProvinceZAReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // TOP3省份 IDCxxx对外(省Z-A)提供服务主要APP的流量\r\n var Top3ProvinceAppTrafficBytesTotal = [\r\n <#if Top3ProvinceAppTrafficBytesTotal??>\r\n <#list Top3ProvinceAppTrafficBytesTotal as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stTop3ProvinceAppTrafficBytesTotal = [\r\n <#if pre1stTop3ProvinceAppTrafficBytesTotal??>\r\n <#list pre1stTop3ProvinceAppTrafficBytesTotal as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndTop3ProvinceAppTrafficBytesTotal = [\r\n <#if pre2ndTop3ProvinceAppTrafficBytesTotal??>\r\n <#list pre2ndTop3ProvinceAppTrafficBytesTotal as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // num1(1st Province App Traffic Bytes)\r\n var provinceTrafficAppBytes1st = [\r\n <#if provinceTrafficAppBytes1st??>\r\n <#list provinceTrafficAppBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preProvinceAppTrafficBytes1st = [\r\n <#if preProvinceAppTrafficBytes1st??>\r\n <#list preProvinceAppTrafficBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndProvinceAppTrafficBytes1st = [\r\n <#if pre2ndProvinceAppTrafficBytes1st??>\r\n <#list pre2ndProvinceAppTrafficBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num2(Province Traffic App Bytes 2nd)\r\n var provinceTrafficAppBytes2nd = [\r\n <#if provinceTrafficAppBytes2nd??>\r\n <#list provinceTrafficAppBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preProvinceTrafficAppBytes2nd = [\r\n <#if preProvinceTrafficAppBytes2nd??>\r\n <#list preProvinceTrafficAppBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndProvinceTrafficAppBytes2nd = [\r\n <#if pre2ndProvinceTrafficAppBytes2nd??>\r\n <#list pre2ndProvinceTrafficAppBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num3(Province Traffic Bytes Total 3rd)\r\n var provinceTrafficBytesTotal3rd = [\r\n <#if provinceTrafficBytesTotal3rd??>\r\n <#list provinceTrafficBytesTotal3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preProvinceTrafficBytesTotal3rd = [\r\n <#if preProvinceTrafficBytesTotal3rd??>\r\n <#list preProvinceTrafficBytesTotal3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndProvinceTrafficBytesTotal3rd = [\r\n <#if pre2ndProvinceTrafficBytesTotal3rd??>\r\n <#list pre2ndProvinceTrafficBytesTotal3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // IDCxxx对外(省Z-A)提供服务的TOP 3 APP 各省份流量\r\n var topAppCompanyProvinceTrafficBytesTotal = [\r\n <#if topAppCompanyProvinceTrafficBytesTotal??>\r\n <#list topAppCompanyProvinceTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stTopAppCompanyProvinceTrafficBytesTotal = [\r\n <#if pre1stTopAppCompanyProvinceTrafficBytesTotal??>\r\n <#list pre1stTopAppCompanyProvinceTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndTopAppCompanyProvinceTrafficBytesTotal = [\r\n <#if pre2ndTopAppCompanyProvinceTrafficBytesTotal??>\r\n <#list pre2ndTopAppCompanyProvinceTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num1(AppCompany Province Traffic Bytes 1st)\r\n var appCompanyProvinceTrafficBytes1st = [\r\n <#if appCompanyProvinceTrafficBytes1st??>\r\n <#list appCompanyProvinceTrafficBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyProvinceTrafficBytes1st = [\r\n <#if preAppCompanyProvinceTrafficBytes1st??>\r\n <#list preAppCompanyProvinceTrafficBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyProvinceTrafficBytes1st = [\r\n <#if pre2ndAppCompanyProvinceTrafficBytes1st??>\r\n <#list pre2ndAppCompanyProvinceTrafficBytes1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num2(AppCompany Province Traffic Bytes 2nd)\r\n var appCompanyProvinceTrafficBytes2nd = [\r\n <#if appCompanyProvinceTrafficBytes2nd??>\r\n <#list appCompanyProvinceTrafficBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyProvinceTrafficBytes2nd = [\r\n <#if preAppCompanyProvinceTrafficBytes2nd??>\r\n <#list preAppCompanyProvinceTrafficBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyProvinceTrafficBytes2nd = [\r\n <#if pre2ndAppCompanyProvinceTrafficBytes2nd??>\r\n <#list pre2ndAppCompanyProvinceTrafficBytes2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num3(AppCompany Province Traffic Bytes 3rd)\r\n var appCompanyProvinceTrafficBytes3rd = [\r\n <#if appCompanyProvinceTrafficBytes3rd??>\r\n <#list appCompanyProvinceTrafficBytes3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyProvinceTrafficBytes3rd = [\r\n <#if preAppCompanyProvinceTrafficBytes3rd??>\r\n <#list preAppCompanyProvinceTrafficBytes3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyProvinceTrafficBytes3rd = [\r\n <#if pre2ndAppCompanyProvinceTrafficBytes3rd??>\r\n <#list pre2ndAppCompanyProvinceTrafficBytes3rd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // IDCxxx内容获取(省A-Z)服务能力 TOP 10 请求流量分布(Province AZ Sent Traffic Bytes Top 10)\r\n var provinceAZSentTrafficBytesTop10 = [\r\n <#if provinceAZSentTrafficBytesTop10??>\r\n <#list provinceAZSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stProvinceAZSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceAZSentTrafficBytesTop10??>\r\n <#list pre1stProvinceAZSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stProvinceAZSentTrafficBytesTop10 = [\r\n <#if pre2stProvinceAZSentTrafficBytesTop10??>\r\n <#list pre2stProvinceAZSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // IDCxxx内容获取(省A-Z)服务能力 TOP 10 响应流量分布(Province AZ Received Traffic Bytes Top 10)\r\n var provinceAZReceivedTrafficBytesTop10 = [\r\n <#if provinceAZReceivedTrafficBytesTop10??>\r\n <#list provinceAZReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stProvinceAZReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceAZReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceAZReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stProvinceAZReceivedTrafficBytesTop10 = [\r\n <#if pre2stProvinceAZReceivedTrafficBytesTop10??>\r\n <#list pre2stProvinceAZReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // IDCxxx对内(地市Z-A)服务能力 TOP 10 省内地区请求流量分布(Region ZA Sent Traffic Bytes Top 10)\r\n var regionZASentTrafficBytesTop10 = [\r\n <#if regionZASentTrafficBytesTop10??>\r\n <#list regionZASentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stRegionZASentTrafficBytesTop10 = [\r\n <#if pre1stRegionZASentTrafficBytesTop10??>\r\n <#list pre1stRegionZASentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stRegionZASentTrafficBytesTop10 = [\r\n <#if pre2stRegionZASentTrafficBytesTop10??>\r\n <#list pre2stRegionZASentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // IDCxxx对内(地市Z-A)服务能力 TOP 10 省内地区响应流量分布(Region ZA Received Traffic Bytes Top 10)\r\n var regionZAReceivedTrafficBytesTop10 = [\r\n <#if regionZAReceivedTrafficBytesTop10??>\r\n <#list regionZAReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stRegionZAReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionZAReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionZAReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stRegionZAReceivedTrafficBytesTop10 = [\r\n <#if pre2stRegionZAReceivedTrafficBytesTop10??>\r\n <#list pre2stRegionZAReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // TOP3省内地区 IDCxxx对内(地市Z-A)服务能力主要APP的流量\r\n var top3RegionAppTrafficBytesTotal = [\r\n <#if top3RegionAppTrafficBytesTotal??>\r\n <#list top3RegionAppTrafficBytesTotal as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stTop3RegionAppTrafficBytesTotal = [\r\n <#if pre1stTop3RegionAppTrafficBytesTotal??>\r\n <#list pre1stTop3RegionAppTrafficBytesTotal as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndTop3RegionAppTrafficBytesTotal = [\r\n <#if pre2ndTop3RegionAppTrafficBytesTotal??>\r\n <#list pre2ndTop3RegionAppTrafficBytesTotal as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num1(Region App Traffic Bytes 1st)\r\n var regionAppTrafficBytes1st = [\r\n <#if regionAppTrafficBytes1st??>\r\n <#list regionAppTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preRegionAppTrafficBytes1st = [\r\n <#if preRegionAppTrafficBytes1st??>\r\n <#list preRegionAppTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndRegionAppTrafficBytes1st = [\r\n <#if pre2ndRegionAppTrafficBytes1st??>\r\n <#list pre2ndRegionAppTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num2(Region App Traffic Bytes 2nd)\r\n var regionAppTrafficBytes2nd = [\r\n <#if regionAppTrafficBytes2nd??>\r\n <#list regionAppTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preRegionAppTrafficBytes2nd = [\r\n <#if preRegionAppTrafficBytes2nd??>\r\n <#list preRegionAppTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndRegionAppTrafficBytes2nd = [\r\n <#if pre2ndRegionAppTrafficBytes2nd??>\r\n <#list pre2ndRegionAppTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num3(Region App Traffic Bytes 3rd)\r\n var regionAppTrafficBytes3rd = [\r\n <#if regionAppTrafficBytes3rd??>\r\n <#list regionAppTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preRegionAppTrafficBytes3rd = [\r\n <#if preRegionAppTrafficBytes3rd??>\r\n <#list preRegionAppTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndRegionAppTrafficBytes3rd = [\r\n <#if pre2ndRegionAppTrafficBytes3rd??>\r\n <#list pre2ndRegionAppTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // IDCxxx对内(地市Z-A)服务能力的TOP 3 APP 各省内地区流量\r\n var top3AppCompanyRegionTrafficBytesTotal = [\r\n <#if top3AppCompanyRegionTrafficBytesTotal??>\r\n <#list top3AppCompanyRegionTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stTop3AppCompanyRegionTraffic = [\r\n <#if pre1stTop3AppCompanyRegionTrafficBytesTotal??>\r\n <#list pre1stTop3AppCompanyRegionTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndTop3AppCompanyRegionTrafficBytesTotal = [\r\n <#if pre2ndTop3AppCompanyRegionTrafficBytesTotal??>\r\n <#list pre2ndTop3AppCompanyRegionTrafficBytesTotal as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num1( AppCompany Region Traffic Bytes 1st)\r\n var appCompanyRegionTrafficBytes1st = [\r\n <#if appCompanyRegionTrafficBytes1st??>\r\n <#list appCompanyRegionTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyRegionTrafficBytes1st = [\r\n <#if preAppCompanyRegionTrafficBytes1st??>\r\n <#list preAppCompanyRegionTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyRegionTrafficBytes1st = [\r\n <#if pre2ndAppCompanyRegionTrafficBytes1st??>\r\n <#list pre2ndAppCompanyRegionTrafficBytes1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num2(AppCompany Province Traffic Bytes 2nd)\r\n var appCompanyRegionTrafficBytes2nd = [\r\n <#if appCompanyRegionTrafficBytes2nd??>\r\n <#list appCompanyRegionTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyRegionTrafficBytes2nd = [\r\n <#if preAppCompanyRegionTrafficBytes2nd??>\r\n <#list preAppCompanyRegionTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyRegionTrafficBytes2nd = [\r\n <#if pre2ndAppCompanyRegionTrafficBytes2nd??>\r\n <#list pre2ndAppCompanyRegionTrafficBytes2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // num3(AppCompany Province Traffic Bytes 3rd)\r\n var appCompanyRegionTrafficBytes3rd = [\r\n <#if appCompanyRegionTrafficBytes3rd??>\r\n <#list appCompanyRegionTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var preAppCompanyRegionTrafficBytes3rd = [\r\n <#if preAppCompanyRegionTrafficBytes3rd??>\r\n <#list preAppCompanyRegionTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2ndAppCompanyRegionTrafficBytes3rd = [\r\n <#if pre2ndAppCompanyRegionTrafficBytes3rd??>\r\n <#list pre2ndAppCompanyRegionTrafficBytes3rd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(IDC内容获取(地市A-Z)服务能力)\r\n var regionAZSentTrafficBytesTop10 = [\r\n <#if regionAZSentTrafficBytesTop10??>\r\n <#list regionAZSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stRegionAZSentTrafficBytesTop10 = [\r\n <#if pre1stRegionAZSentTrafficBytesTop10??>\r\n <#list pre1stRegionAZSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stRegionAZSentTrafficBytesTop10 = [\r\n <#if pre2stRegionAZSentTrafficBytesTop10??>\r\n <#list pre2stRegionAZSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // IDC内容获取(地市A-Z)服务能力 TOP 10 省内地区响应流量分布(Region AZ\r\n var regionAZReceivedTrafficBytesTop10 = [\r\n <#if regionAZReceivedTrafficBytesTop10??>\r\n <#list regionAZReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre1stRegionAZReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionAZReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionAZReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n var pre2stRegionAZReceivedTrafficBytesTop10 = [\r\n <#if pre2stRegionAZReceivedTrafficBytesTop10??>\r\n <#list pre2stRegionAZReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 4.1 IDC xxx 命中流量 */\r\n // 总流量\r\n var xxxServiceTrafficBytes = [\r\n <#if xxxServiceTrafficBytes??>\r\n <#list xxxServiceTrafficBytes as d>\r\n {received_bytes:${jsGetNumFromObj(d,\'received_bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 未命中缓存流量\r\n var xxxServiceMissCacheBytes = [\r\n <#if xxxServiceMissCacheBytes??>\r\n <#list xxxServiceMissCacheBytes as d>\r\n {received_bytes:${jsGetNumFromObj(d,\'received_bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.2 IDCxxx缓存命中会话 */\r\n var xxxServiceTotalSessions = [\r\n <#if xxxServiceTotalSessions??>\r\n <#list xxxServiceTotalSessions as d>\r\n {sessions:${jsGetNumFromObj(d,\'sessions\')}},\r\n </#list>\r\n </#if>\r\n ]\r\n var xxxServiceMissCacheSessions = [\r\n <#if xxxServiceMissCacheSessions??>\r\n <#list xxxServiceMissCacheSessions as d>\r\n {sessions:${jsGetNumFromObj(d,\'sessions\')}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.3 IDCxxx缓存未命中APP流量 */\r\n var top10AppMissCacheBytes = [\r\n <#if top10AppMissCacheBytes??>\r\n <#list top10AppMissCacheBytes as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",received_bytes:${jsGetNumFromObj(d,\'received_bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.4 IDCxxx缓存未命中DOMAIN流量 */\r\n var top10DomainMissCacheBytes = [\r\n <#if top10DomainMissCacheBytes??>\r\n <#list top10DomainMissCacheBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",received_bytes:${jsGetNumFromObj(d,\'received_bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.5 IDCxxx缓存未命中的应用层协议流量占比 */\r\n var top10ProtocolMissCacheBytes = [\r\n <#if top10ProtocolMissCacheBytes??>\r\n <#list top10ProtocolMissCacheBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",received_bytes:${jsGetNumFromObj(d,\'received_bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.6 IDCxxx缓存未命中APP会话 */\r\n var top10AppMissCacheSessions = [\r\n <#if top10AppMissCacheSessions??>\r\n <#list top10AppMissCacheSessions as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",sessions:${jsGetNumFromObj(d,\'sessions\')}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.7 IDCxxx缓存未命中DOMAIN会话 */\r\n var top10DomainMissCacheSessions = [\r\n <#if top10DomainMissCacheSessions??>\r\n <#list top10DomainMissCacheSessions as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",sessions:${jsGetNumFromObj(d,\'sessions\')}},\r\n </#list>\r\n </#if>\r\n ]\r\n /* 4.8 IDCxxx缓存未命中的应用层协议会话占比 */\r\n var top10ProtocolMissCacheSessions = [\r\n <#if top10ProtocolMissCacheSessions??>\r\n <#list top10ProtocolMissCacheSessions as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",sessions:${jsGetNumFromObj(d,\'sessions\')}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n\r\n ${reportJsCommon}\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\'currentRange0\', \'currentRange7\', \'currentRange8\', \'currentRange13\', \'currentRange14\']\r\n var prevRanges = [\'prevRange0\', \'prevRange7\', \'prevRange8\', \'prevRange13\', \'prevRange14\']\r\n var statisticsRanges = [\r\n \'statisticsRange1\',\r\n \'statisticsRange2\',\r\n \'statisticsRange3\',\r\n \'statisticsRange4\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && (xxxServiceRate.rate90 && xxxServiceRate.rate50 && xxxServiceRate.rate99) !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // 域外访问域内服务的Top 10省份流量分布折线图\r\n function initEcharts2 () {\r\n var categoryData2 = provinceZASentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData2 = provinceZASentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceZATrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceZATrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceZASentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceZASentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2stProvinceZASentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域外访问域内服务的Top 10省份流量分布折线图\r\n function initEcharts8 () {\r\n var categoryData8 = provinceZAReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData8 = provinceZAReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceZATrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceZATrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceZAReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceZAReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2stProvinceZAReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域内访问域外服务的Top 10省份流量分布折线图\r\n function initEcharts3 () {\r\n var categoryData3 = provinceAZSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData3 = provinceAZSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceAZTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceAZTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceAZSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceAZSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2stProvinceAZSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域内访问域外服务的Top 10省份流量分布折线图\r\n function initEcharts9 () {\r\n var categoryData9 = provinceAZReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData9 = provinceAZReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceAZTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceAZTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceAZReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceAZReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2stProvinceAZReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域外访问域内服务的Top 10省内地区流量分布折线图\r\n function initEcharts4 () {\r\n var categoryData4 = regionZASentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData4 = regionZASentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceZARegionTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceZARegionTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionZASentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionZASentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2stRegionZASentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域外访问域内服务的Top 10省内地区流量分布折线图\r\n function initEcharts10 () {\r\n var categoryData10 = regionZAReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData10 = regionZAReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceZATrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceZARegionTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionZAReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionZAReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2stRegionZAReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域内访问域外服务的TOP 10省内地区流量分布折线图\r\n function initEcharts5 () {\r\n var categoryData5 = regionAZSentTrafficBytesTop10.map(t => t.server_admin_area)\r\n var barSeriesData5 = regionAZSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceAZRegionTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceAZRegionTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionAZSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionAZSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2stRegionAZSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 域内访问域外服务的TOP 10省内地区流量分布折线图\r\n function initEcharts11 () {\r\n var categoryData11 = regionAZReceivedTrafficBytesTop10.map(t => t.server_admin_area)\r\n var barSeriesData11 = regionAZReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceAZRegionTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceAZRegionTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionAZReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionAZReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2stRegionAZReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n function initEcharts6 () {\r\n var total6 = top10ProtocolMissCacheBytes.find(b => b.l7_protocol === \'total\')\r\n if (total6) {\r\n var pieDomainData6 = []\r\n var missedCache6 = top10ProtocolMissCacheBytes.filter(t => t.l7_protocol !== \'total\')\r\n var sessionsAll = 0\r\n pieDomainData6 = missedCache6.map(t => {\r\n sessionsAll += t.received_bytes\r\n return {\r\n value: t.received_bytes === 0 ? 0 : t.received_bytes / total6.received_bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData6.push({ name: \'other\', value: (total6.received_bytes - sessionsAll) / total6.received_bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas6\')\r\n var option = deepClone(pieOption)\r\n option.title.text = \'应用层协议流量占比\'\r\n option.series[0].data = pieDomainData6\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts7 () {\r\n var total7 = top10ProtocolMissCacheSessions.find(b => b.l7_protocol === \'total\')\r\n if (total7) {\r\n var pieDomainData7 = []\r\n var missedCache7 = top10ProtocolMissCacheSessions.filter(t => t.l7_protocol !== \'total\')\r\n var sessionsAll = 0\r\n pieDomainData7 = missedCache7.map(t => {\r\n sessionsAll += t.sessions\r\n return {\r\n value: t.sessions === 0 ? 0 : t.sessions / total7.sessions,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData7.push({ name: \'other\', value: (total7.sessions - sessionsAll) / total7.sessions })\r\n }\r\n var myChart = initEchartsInstance(\'canvas7\')\r\n var option = deepClone(pieOption)\r\n option.title.text = \'应用层协议会话占比\'\r\n option.series[0].data = pieDomainData7\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts12 () {\r\n var total12 = top10RelatedAppBytes.find(b => b.app_company === \'total\')\r\n if (total12) {\r\n var pieAppData12 = []\r\n var businessDistributionAppData12 = top10RelatedAppBytes.filter(t => t.app_company !== \'total\')\r\n var bytesAll = 0\r\n pieAppData12 = businessDistributionAppData12.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total12.bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieAppData12.push({ name: \'other\', value: (total12.bytes - bytesAll) / total12.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas12\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieAppData12\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n function initEcharts14 () {\r\n var total14 = top10AppMissCacheBytes.find(b => b.app_company === \'total\')\r\n if (total14) {\r\n var pieDomainData14 = []\r\n var missedCache14 = top10AppMissCacheBytes.filter(t => t.app_company !== \'total\')\r\n var receivedBytesAll = 0\r\n pieDomainData14 = missedCache14.map(t => {\r\n receivedBytesAll += t.received_bytes\r\n return {\r\n value: t.received_bytes === 0 ? 0 : t.received_bytes / total14.received_bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieDomainData14.push({ name: \'other\', value: (total14.received_bytes - receivedBytesAll) / total14.received_bytes })\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData14\r\n option.title.text = \'APP流量占比\'\r\n myChart.setOption(option)\r\n }\r\n function initEcharts15 () {\r\n var total15 = top10AppMissCacheSessions.find(b => b.app_company === \'total\')\r\n if (total15) {\r\n var pieDomainData15 = []\r\n var missedCache15 = top10AppMissCacheSessions.filter(t => t.app_company !== \'total\')\r\n var sessionsAll = 0\r\n pieDomainData15 = missedCache15.map(t => {\r\n sessionsAll += t.sessions\r\n return {\r\n value: t.sessions === 0 ? 0 : t.sessions / total15.sessions,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieDomainData15.push({ name: \'other\', value: (total15.sessions - sessionsAll) / total15.sessions })\r\n }\r\n var myChart = initEchartsInstance(\'canvas15\')\r\n var option = deepClone(pieOption)\r\n option.title.text = \'APP会话占比\'\r\n option.series[0].data = pieDomainData15\r\n myChart.setOption(option)\r\n }\r\n function initEcharts16 () {\r\n var total16 = top10DomainMissCacheBytes.find(b => b.domain === \'total\')\r\n if (total16) {\r\n var pieDomainData16 = []\r\n var missedCache16 = top10DomainMissCacheBytes.filter(t => t.domain !== \'total\')\r\n var receivedBytesAll = 0\r\n pieDomainData16 = missedCache16.map(t => {\r\n receivedBytesAll += t.received_bytes\r\n return {\r\n value: t.received_bytes === 0 ? 0 : t.received_bytes / total16.received_bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData16.push({ name: \'other\', value: (total16.received_bytes - receivedBytesAll) / total16.received_bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas16\')\r\n var option = deepClone(pieOption)\r\n option.title.text = \'域名流量占比\'\r\n option.series[0].data = pieDomainData16\r\n myChart.setOption(option)\r\n }\r\n function initEcharts17 () {\r\n var total17 = top10DomainMissCacheSessions.find(b => b.domain === \'total\')\r\n if (total17) {\r\n var pieDomainData17 = []\r\n var missedCache17 = top10DomainMissCacheSessions.filter(t => t.domain !== \'total\')\r\n var sessionsAll = 0\r\n pieDomainData17 = missedCache17.map(t => {\r\n sessionsAll += t.sessions\r\n return {\r\n value: t.sessions === 0 ? 0 : t.sessions / total17.sessions,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData17.push({ name: \'other\', value: (total17.sessions - sessionsAll) / total17.sessions })\r\n }\r\n var myChart = initEchartsInstance(\'canvas17\')\r\n var option = deepClone(pieOption)\r\n option.title.text = \'域名会话占比\'\r\n option.series[0].data = pieDomainData17\r\n myChart.setOption(option)\r\n }\r\n\r\n var barOption3 = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n function initEcharts19 () {\r\n var totalBytes19 = 0\r\n var missCacheBytes19 = 0\r\n var categoryData19 = [\'内容获取会话总流量\', \'提供服务的会话总流量\']\r\n if (xxxServiceTrafficBytes[0] && xxxServiceTrafficBytes[0].received_bytes) {\r\n totalBytes19 = xxxServiceTrafficBytes[0].received_bytes\r\n }\r\n if (xxxServiceMissCacheBytes[0] && xxxServiceMissCacheBytes[0].received_bytes) {\r\n missCacheBytes19 = xxxServiceMissCacheBytes[0].received_bytes\r\n }\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = {\r\n animation: false,\r\n color: [chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData19,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n data: [missCacheBytes19, totalBytes19],\r\n barWidth: 40,\r\n barMinHeight: 2,\r\n label: {\r\n show: true,\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n position: \'top\',\r\n fontSize: 10,\r\n formatter (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n function initEcharts20 () {\r\n var totalBytes20 = 0\r\n var missCacheBytes20 = 0\r\n var categoryData20 = [\'内容获取会话数\', \'提供服务的会话数\']\r\n if (xxxServiceTotalSessions[0] && xxxServiceTotalSessions[0].sessions) {\r\n totalBytes20 = xxxServiceTotalSessions[0].sessions\r\n }\r\n if (xxxServiceMissCacheSessions[0] && xxxServiceMissCacheSessions[0].sessions) {\r\n missCacheBytes20 = xxxServiceMissCacheSessions[0].sessions\r\n }\r\n var myChart = initEchartsInstance(\'canvas20\')\r\n var option = {\r\n animation: false,\r\n color: [chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData20,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.number).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n data: [missCacheBytes20, totalBytes20],\r\n barWidth: 40,\r\n barMinHeight: 2,\r\n label: {\r\n show: true,\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n position: \'top\',\r\n fontSize: 10,\r\n formatter (param) {\r\n return unitConvert(param.value, unitTypes.number).join(\'\')\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n function initEcharts21 () {\r\n var province21 = Top3ProvinceAppTrafficBytesTotal[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province21, pre1stTop3ProvinceAppTrafficBytesTotal, pre2ndTop3ProvinceAppTrafficBytesTotal, provinceTrafficAppBytes1st, preProvinceAppTrafficBytes1st, pre2ndProvinceAppTrafficBytes1st, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas21\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts22 () {\r\n var province22 = Top3ProvinceAppTrafficBytesTotal[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province22, pre1stTop3ProvinceAppTrafficBytesTotal, pre2ndTop3ProvinceAppTrafficBytesTotal, provinceTrafficAppBytes2nd, preProvinceTrafficAppBytes2nd, pre2ndProvinceTrafficAppBytes2nd, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas22\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts23 () {\r\n var province23 = Top3ProvinceAppTrafficBytesTotal[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province23, pre1stTop3ProvinceAppTrafficBytesTotal, pre2ndTop3ProvinceAppTrafficBytesTotal, provinceTrafficBytesTotal3rd, preProvinceTrafficBytesTotal3rd, pre2ndProvinceTrafficBytesTotal3rd, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas23\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts24 () {\r\n var province24 = topAppCompanyProvinceTrafficBytesTotal[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province24, pre1stTopAppCompanyProvinceTrafficBytesTotal, pre2ndTopAppCompanyProvinceTrafficBytesTotal, appCompanyProvinceTrafficBytes1st, preAppCompanyProvinceTrafficBytes1st, pre2ndAppCompanyProvinceTrafficBytes1st, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas24\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts25 () {\r\n var province25 = topAppCompanyProvinceTrafficBytesTotal[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province25, pre1stTopAppCompanyProvinceTrafficBytesTotal, pre2ndTopAppCompanyProvinceTrafficBytesTotal, appCompanyProvinceTrafficBytes2nd, preAppCompanyProvinceTrafficBytes2nd, pre2ndAppCompanyProvinceTrafficBytes2nd, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas25\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts26 () {\r\n var province26 = topAppCompanyProvinceTrafficBytesTotal[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province26, pre1stTopAppCompanyProvinceTrafficBytesTotal, pre2ndTopAppCompanyProvinceTrafficBytesTotal, appCompanyProvinceTrafficBytes3rd, preAppCompanyProvinceTrafficBytes3rd, pre2ndAppCompanyProvinceTrafficBytes3rd, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas26\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts27 () {\r\n var region27 = top3RegionAppTrafficBytesTotal[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(region27, pre1stTop3RegionAppTrafficBytesTotal, pre2ndTop3RegionAppTrafficBytesTotal, regionAppTrafficBytes1st, preRegionAppTrafficBytes1st, pre2ndRegionAppTrafficBytes1st, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas27\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts28 () {\r\n var region28 = top3RegionAppTrafficBytesTotal[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(region28, pre1stTop3RegionAppTrafficBytesTotal, pre2ndTop3RegionAppTrafficBytesTotal, regionAppTrafficBytes2nd, preRegionAppTrafficBytes2nd, pre2ndRegionAppTrafficBytes2nd, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas28\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts29 () {\r\n var region29 = top3RegionAppTrafficBytesTotal[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(region29, pre1stTop3RegionAppTrafficBytesTotal, pre2ndTop3RegionAppTrafficBytesTotal, regionAppTrafficBytes3rd, preRegionAppTrafficBytes3rd, pre2ndRegionAppTrafficBytes3rd, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas29\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts30 () {\r\n var province30 = top3AppCompanyRegionTrafficBytesTotal[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province30, pre1stTop3AppCompanyRegionTraffic, pre2ndTop3AppCompanyRegionTrafficBytesTotal, appCompanyRegionTrafficBytes1st, preAppCompanyRegionTrafficBytes1st, pre2ndAppCompanyRegionTrafficBytes1st, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas30\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts31 () {\r\n var province31 = top3AppCompanyRegionTrafficBytesTotal[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province31, pre1stTop3AppCompanyRegionTraffic, pre2ndTop3AppCompanyRegionTrafficBytesTotal, appCompanyRegionTrafficBytes2nd, preAppCompanyRegionTrafficBytes2nd, pre2ndAppCompanyRegionTrafficBytes2nd, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas31\')\r\n var option = deepClone(barOption3)\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n function initEcharts32 () {\r\n var province32 = top3AppCompanyRegionTrafficBytesTotal[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province32, pre1stTop3AppCompanyRegionTraffic, pre2ndTop3AppCompanyRegionTrafficBytesTotal, appCompanyRegionTrafficBytes3rd, preAppCompanyRegionTrafficBytes3rd, pre2ndAppCompanyRegionTrafficBytes3rd, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas32\')\r\n var option = deepClone(barOption3)\r\n\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts6() } catch (e) { console.error(e) }\r\n try { initEcharts7() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts12() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts15() } catch (e) { console.error(e) }\r\n try { initEcharts16() } catch (e) { console.error(e) }\r\n try { initEcharts17() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initEcharts20() } catch (e) { console.error(e) }\r\n try { initEcharts21() } catch (e) { console.error(e) }\r\n try { initEcharts22() } catch (e) { console.error(e) }\r\n try { initEcharts23() } catch (e) { console.error(e) }\r\n try { initEcharts24() } catch (e) { console.error(e) }\r\n try { initEcharts25() } catch (e) { console.error(e) }\r\n try { initEcharts26() } catch (e) { console.error(e) }\r\n try { initEcharts27() } catch (e) { console.error(e) }\r\n try { initEcharts28() } catch (e) { console.error(e) }\r\n try { initEcharts29() } catch (e) { console.error(e) }\r\n try { initEcharts30() } catch (e) { console.error(e) }\r\n try { initEcharts31() } catch (e) { console.error(e) }\r\n try { initEcharts32() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n\r\n</body></html>', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"Tenant\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.Tenant\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceZATrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceZATrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2stxxxServiceZATrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceZARegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceZARegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stxxxServiceZARegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceAZTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceAZTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stxxxServiceAZTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceAZRegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceAZRegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stxxxServiceAZRegionTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= toDateTime(${startTime}) AND recv_time < toDateTime(${endTime}) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceZATcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceZATcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceZAPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceZAPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceAZTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceAZTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceAZPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceAZPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedAppBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time <${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stProvinceZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stProvinceZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Top3ProvinceAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stTop3ProvinceAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndTop3ProvinceAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficAppBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preProvinceAppTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceAppTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficAppBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preProvinceTrafficAppBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceTrafficAppBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficBytesTotal3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preProvinceTrafficBytesTotal3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceTrafficBytesTotal3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"topAppCompanyProvinceTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stTopAppCompanyProvinceTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company \",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndTopAppCompanyProvinceTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyProvinceTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyProvinceTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyProvinceTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyProvinceTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyProvinceTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyProvinceTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyProvinceTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyProvinceTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyProvinceTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stProvinceAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stProvinceAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stRegionZASentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stRegionZAReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top3RegionAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stTop3RegionAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndTop3RegionAppTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionAppTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preRegionAppTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionAppTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionAppTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preRegionAppTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionAppTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionAppTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preRegionAppTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionAppTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top3AppCompanyRegionTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stTop3AppCompanyRegionTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndTop3AppCompanyRegionTrafficBytesTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyRegionTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyRegionTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyRegionTrafficBytes1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyRegionTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1,1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyRegionTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1,1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyRegionTrafficBytes2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyRegionTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2,1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"preAppCompanyRegionTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2,1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndAppCompanyRegionTrafficBytes3rd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, ROUND(MAX(sent_rate), 4) AS sent_rate_max, ROUND(MIN(sent_rate), 4) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stRegionAZSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, ROUND(MAX(received_rate), 4) AS received_rate_max, ROUND(MIN(received_rate), 4) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND client_admin_area IN (\'IDC\') AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2stRegionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(received_bytes) AS received_bytes, server_ip_tags AS server_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_ip_tags ORDER BY received_bytes DESC LIMIT 1\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(received_bytes) AS received_bytes, client_ip_tags AS client_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY client_ip_tags ORDER BY received_bytes DESC LIMIT 1\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceMissCacheBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, server_ip_tags AS server_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags, \'${Tenant}\') OR has(server_ip_tags, \'${Tenant}\')) GROUP BY server_ip_tags ORDER BY sessions DESC LIMIT 1\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTotalSessions\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, client_ip_tags AS client_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY client_ip_tags ORDER BY sessions DESC LIMIT 1\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceMissCacheSessions\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(received_bytes) AS received_bytes, app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY app_company ORDER BY received_bytes DESC LIMIT 10 UNION ALL SELECT SUM(received_bytes) AS received_bytes, \'total\' AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY app_company ORDER BY received_bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10AppMissCacheBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(received_bytes) AS received_bytes, domain AS domain FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY domain ORDER BY received_bytes DESC LIMIT 10 UNION ALL SELECT SUM(received_bytes) AS received_bytes, \'total\' AS domain FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY domain ORDER BY received_bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10DomainMissCacheBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(received_bytes) AS received_bytes, l7_protocol AS l7_protocol FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY l7_protocol ORDER BY received_bytes DESC LIMIT 10 UNION ALL SELECT SUM(received_bytes) AS received_bytes, \'total\' AS l7_protocol FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY l7_protocol ORDER BY received_bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10ProtocolMissCacheBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY app_company ORDER BY sessions DESC LIMIT 10 UNION ALL SELECT SUM(sessions) AS sessions, \'total\' AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY app_company ORDER BY sessions DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10AppMissCacheSessions\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, domain AS domain FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY domain ORDER BY sessions DESC LIMIT 10 UNION ALL SELECT SUM(sessions) AS sessions, \'total\' AS domain FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY domain ORDER BY sessions DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10DomainMissCacheSessions\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, l7_protocol AS l7_protocol FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY l7_protocol ORDER BY sessions DESC LIMIT 10 UNION ALL SELECT SUM(sessions) AS sessions, \'total\' AS l7_protocol FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND has(client_ip_tags, \'${Tenant}\') GROUP BY l7_protocol ORDER BY sessions DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10ProtocolMissCacheSessions\"\r\n }\r\n ]\r\n}\r\n\r\n\r\n', 1, '2022-06-21 14:57:42', 1, '2022-06-21 14:57:48', NULL); +INSERT INTO `report_category` VALUES (2, 'IDC网络质量报告', '<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<#setting number_format=\"0.####\"/>\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <title>IDC整体流量监测报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IDC整体流量监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficRate,0,\'rate_avg\',\'number\'),getFromArr(trafficRatePre1st,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficRatePre1st,0,\'rate_avg\',\'number\'),getFromArr(trafficRatePre2nd,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficSummary,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficSummary,0,\'bytes\',\'number\'),getFromArr(trafficSummaryPre1st,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficSummaryPre1st,0,\'bytes\',\'number\'),getFromArr(trafficSummaryPre2nd,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务流量排名</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">APP流量速率</th>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图2 TOP10 APP流量情况</div>\r\n</div>\r\n\r\n<div class=\"header2\">三.服务质量概况</div>\r\n<div class=\"header3\">1.整体质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 客户端访问 IDC (Z-A) 的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(TCPConnectionEstablishmentZA,0,\'establish_latency_avg\',\'number\'),getFromArr(TCPConnectionEstablishmentZAPre1st,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(packetRetransRateZA,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(packetRetransRateZAPre1st,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 IDC内容获取(A-Z)的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(TCPConnectionEstablishmentAZ,0,\'establish_latency_avg\',\'number\'),getFromArr(TCPConnectionEstablishmentAZPre1st,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(packetRetransRateAZ,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(packetRetransRateAZPre1st,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"header3\">2.业务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表4 TOP10 APP服务质量情况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th rowspan=\"2\" class=\"table__th\">APP</th>\r\n <th rowspan=\"2\" class=\"table__th\">流量占比</th>\r\n <th colspan=\"3\" class=\"table__th\">TCP会话延迟(ms)</th>\r\n <th colspan=\"3\" class=\"table__th\">重传率</th>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">${getFromObj(val,\'app_company\',\'string\')}</td>\r\n <td class=\"table__td\">${proportion(getFromObj(val,\'bytes\',\'number\'),getFromArr(trafficSummary,0,\'bytes\',\'number\'))}</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany),\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany),\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany),\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(TCPConnectionEstablishmentTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany),\'establish_latency_avg\',\'number\'),getFromArr(TCPConnectionEstablishmentTop10AppCompanyPre1st,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, TCPConnectionEstablishmentTop10AppCompanyPre1st),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(packetRetransRateTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompany),\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(packetRetransRateTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompany),\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(packetRetransRateTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompany),\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompany),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(packetRetransRateTop10AppCompany,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompany),\'pkt_retrans_percent_avg\',\'number\'),getFromArr(packetRetransRateTop10AppCompanyPre1st,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, packetRetransRateTop10AppCompanyPre1st),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </#list>\r\n </#if>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div class=\"header2\">四.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceSentTrafficSummaryTop10ZA??>\r\n <#list provinceSentTrafficSummaryTop10ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceSentTrafficSummaryTop10ZA??>\r\n <#list provinceSentTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceSentTrafficSummaryTop10ZA??>\r\n <#list provinceSentTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图3 IDC对外(省Z-A)服务能力的TOP10省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceReceivedTrafficSummaryTop10ZA??>\r\n <#list provinceReceivedTrafficSummaryTop10ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceReceivedTrafficSummaryTop10ZA??>\r\n <#list provinceReceivedTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceReceivedTrafficSummaryTop10ZA??>\r\n <#list provinceReceivedTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 IDC对外(省Z-A)服务能力的TOP10省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if provinceTrafficSummaryTop3ZA??>\r\n <#list provinceTrafficSummaryTop3ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas24\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas25\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas26\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange1\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange1\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange1\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图5 IDC对外(省Z-A)提供服务TOP3省份的APP的流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if appTrafficSummaryTop3ZA??>\r\n <#list appTrafficSummaryTop3ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas27\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas28\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas29\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange2\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange2\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange2\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图6 IDC对外(省 Z-A)提供服务TOP3 APP的各省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceSentTrafficSummaryTop10AZ??>\r\n <#list provinceSentTrafficSummaryTop10AZ as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceSentTrafficSummaryTop10AZ??>\r\n <#list provinceSentTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceSentTrafficSummaryTop10AZ??>\r\n <#list provinceSentTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 IDC内容获取(省A-Z)服务能力的TOP10省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas6\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceReceivedTrafficSummaryTop10AZ??>\r\n <#list provinceReceivedTrafficSummaryTop10AZ as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceReceivedTrafficSummaryTop10AZ??>\r\n <#list provinceReceivedTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceReceivedTrafficSummaryTop10AZ??>\r\n <#list provinceReceivedTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 IDC内容获取(省A-Z)服务能力的TOP10省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas7\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceSentTrafficSummaryTop10ZA??>\r\n <#list inProvinceSentTrafficSummaryTop10ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceSentTrafficSummaryTop10ZA??>\r\n <#list inProvinceSentTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceSentTrafficSummaryTop10ZA??>\r\n <#list inProvinceSentTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 IDC对内(地市Z-A)服务能力的TOP10省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceReceivedTrafficSummaryTop10ZA??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10ZA??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10ZA??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZA as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 IDC对内(地市Z-A)服务能力的TOP10省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3ZA??>\r\n <#list inProvinceTrafficSummaryTop3ZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas11\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas12\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas13\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange3\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange3\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange3\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图11 IDC对内(地市Z-A)服务能力的TOP3省内地区主要app流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3AppZA??>\r\n <#list inProvinceTrafficSummaryTop3AppZA as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas14\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas15\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas16\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange4\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange4\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange4\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图12 IDC对内(地市Z-A)服务能力的TOP3 APP的省内地区流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceSentTrafficSummaryTop10AZ??>\r\n <#list inProvinceSentTrafficSummaryTop10AZ as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceSentTrafficSummaryTop10AZ??>\r\n <#list inProvinceSentTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceSentTrafficSummaryTop10AZ??>\r\n <#list inProvinceSentTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图13 IDC内容获取(地市A-Z)服务能力的TOP10省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceReceivedTrafficSummaryTop10AZ??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZ as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10AZ??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10AZ??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZ as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图14 IDC内容获取(地市A-Z)服务能力的TOP10省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header2\">五.IDC租用方内容收敛情况</div>\r\n<div class=\"echarts-box indent-3\">\r\n <#if IDCTrafficSessionTop3??>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas18\"></div>\r\n </div>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas19\"></div>\r\n </div>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas20\"></div>\r\n </div>\r\n </#if>\r\n</div>\r\n<div class=\"echarts__title\">图15 TOP3 IDC租用方会话分布</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <#if IDCWithoutTrafficSessionTop3??>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas21\"></div>\r\n </div>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas22\"></div>\r\n </div>\r\n <div class=\"echarts echarts__bar\">\r\n <div class=\"echarts__canvas\" id=\"canvas23\"></div>\r\n </div>\r\n </#if>\r\n</div>\r\n<div class=\"echarts__title\">图16 TOP3 IDC租用方流量分布</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n var timeZoneOffset = ${timeZoneOffset}\r\n // 1.1.1 总流量\r\n var trafficSummary = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummary,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummary,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummary,0,\'bytes\')/1024},\r\n sessions: ${jsGetNumFromArr(trafficSummary,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.2 前一周期总流量\r\n var trafficSummaryPre1st = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes\')/1024},\r\n sessions: ${jsGetNumFromArr(trafficSummaryPre1st,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.3 前两周期总流量\r\n var trafficSummaryPre2nd = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes\')/1024},\r\n sessions: ${jsGetNumFromArr(trafficSummaryPre2nd,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.4 流量速率\r\n var trafficRate = {\r\n rate50: ${jsGetNumFromArr(trafficRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(trafficRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(trafficRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRate,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.5 前一周期流量速率\r\n var trafficRatePre1st = {\r\n rate50: ${jsGetNumFromArr(trafficRatePre1st,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(trafficRatePre1st,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(trafficRatePre1st,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.6 前两周期流量速率\r\n var trafficRatePre2nd = {\r\n rate50: ${jsGetNumFromArr(trafficRatePre2nd,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(trafficRatePre2nd,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(trafficRatePre2nd,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.7 域外访问域内总流量\r\n var trafficSummaryToIDC = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryToIDC,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryToIDC,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryToIDC,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.8 前一周期域外访问域内总流量\r\n var trafficSummaryToIDCPre1st = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryToIDCPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryToIDCPre1st,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryToIDCPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.9 域内访问域外总流量\r\n var trafficSummaryIDCTo = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryIDCTo,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryIDCTo,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryIDCTo,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.10 前一周期域内访问域外总流量\r\n var trafficSummaryIDCToPre1st = {\r\n bytes_sent: ${jsGetNumFromArr(trafficSummaryIDCToPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(trafficSummaryIDCToPre1st,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(trafficSummaryIDCToPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.11 省内域外访问域内总流量\r\n var inProvinceTrafficSummaryToIDC = {\r\n bytes_sent: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDC,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDC,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDC,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.12 前一周期省内域外访问域内总流量\r\n var inProvinceTrafficSummaryToIDCPre1st = {\r\n bytes_sent: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDCPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDCPre1st,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(inProvinceTrafficSummaryToIDCPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.13 省内域内访问域外总流量\r\n var inProvinceTrafficSummaryIDCTo = {\r\n bytes_sent: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCTo,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCTo,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCTo,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.14 前一周期省内域内访问域外总流量\r\n var inProvinceTrafficSummaryIDCToPre1st = {\r\n bytes_sent: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCToPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCToPre1st,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(inProvinceTrafficSummaryIDCToPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1. 整体流量\r\n // 1.2.1 流量变化曲线\r\n var trafficRateTrend = [\r\n <#if trafficRateTrend??>\r\n <#list trafficRateTrend as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000}, rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 流量速率\r\n var quantile1 = {\r\n rate50: ${jsGetNumFromArr(trafficRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(trafficRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(trafficRate,0,\'rate99\')/1000}\r\n }\r\n\r\n // 2. 业务流量\r\n // 2.1.1 Top 10 App流量概况\r\n var appCompanyTrafficTop10 = [\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.2 前一周期Top 10 App Company Traffic\r\n var appCompanyTrafficTop10Pre1st = [\r\n <#if appCompanyTrafficTop10Pre1st??>\r\n <#list appCompanyTrafficTop10Pre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3 前两周期Top 10 App Company Traffic\r\n var appCompanyTrafficTop10Pre2nd = [\r\n <#if appCompanyTrafficTop10Pre2nd??>\r\n <#list appCompanyTrafficTop10Pre2nd as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 3. 服务质量概况\r\n\r\n // 3.1 客户端访问IDC(Z-A)的服务质量\r\n // 3.1.1 TCP会话创建延迟\r\n var TCPConnectionEstablishmentZA = {\r\n <#if TCPConnectionEstablishmentZA??>\r\n <#list TCPConnectionEstablishmentZA as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.1.2 前一周期TCP会话创建延迟\r\n var TCPConnectionEstablishmentZAPre1st = {\r\n <#if TCPConnectionEstablishmentZAPre1st??>\r\n <#list TCPConnectionEstablishmentZAPre1st as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.1.3 重传率\r\n var packetRetransRateZA = {\r\n <#if packetRetransRateZA??>\r\n <#list packetRetransRateZA as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.1.4 前一周期重传率\r\n var packetRetransRateZAPre1st = {\r\n <#if packetRetransRateZAPre1st??>\r\n <#list packetRetransRateZAPre1st as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.2 IDC内容获取(A-Z)的服务质量\r\n // 3.2.1 TCP会话创建延迟\r\n var TCPConnectionEstablishmentAZ = {\r\n <#if TCPConnectionEstablishmentAZ??>\r\n <#list TCPConnectionEstablishmentAZ as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.2.2 前一周期TCP会话创建延迟\r\n var TCPConnectionEstablishmentAZPre1st = {\r\n <#if TCPConnectionEstablishmentAZPre1st??>\r\n <#list TCPConnectionEstablishmentAZPre1st as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.2.3 重传率\r\n var packetRetransRateAZ = {\r\n <#if packetRetransRateAZ??>\r\n <#list packetRetransRateAZ as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.2.4 前一周期重传率\r\n var packetRetransRateAZPre1st = {\r\n <#if packetRetransRateAZPre1st??>\r\n <#list packetRetransRateAZPre1st as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3 Top10 App Companyf服务质量\r\n // 3.3.1 Top10 App Company TCP会话创建延迟\r\n var TCPConnectionEstablishmentTop10AppCompany = {\r\n <#if TCPConnectionEstablishmentTop10AppCompany??>\r\n <#list TCPConnectionEstablishmentTop10AppCompany as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.2 前一周期Top10 App Company TCP会话创建延迟\r\n var TCPConnectionEstablishmentTop10AppCompanyPre1st = {\r\n <#if TCPConnectionEstablishmentTop10AppCompanyPre1st??>\r\n <#list TCPConnectionEstablishmentTop10AppCompanyPre1st as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.3 重传率\r\n var packetRetransRateTop10AppCompany = {\r\n <#if packetRetransRateTop10AppCompany??>\r\n <#list packetRetransRateTop10AppCompany as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.4 前一周期重传率\r\n var packetRetransRateTop10AppCompanyPre1st = {\r\n <#if packetRetransRateTop10AppCompanyPre1st??>\r\n <#list packetRetransRateTop10AppCompanyPre1st as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 4. 地理位置分布\r\n //4.1 IDC对外(省Z-A)服务能力Top10省份请求流量分布\r\n\r\n // 4.1.1 Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10ZA = [\r\n <#if provinceSentTrafficSummaryTop10ZA??>\r\n <#list provinceSentTrafficSummaryTop10ZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.2 前一周期Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10ZAPre1st= [\r\n <#if provinceSentTrafficSummaryTop10ZAPre1st??>\r\n <#list provinceSentTrafficSummaryTop10ZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.3 前两周期Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10ZAPre2nd = [\r\n <#if provinceSentTrafficSummaryTop10ZAPre2nd??>\r\n <#list provinceSentTrafficSummaryTop10ZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 IDC对外(省Z-A)服务能力Top10省份响应流量分布\r\n // 4.2.1 Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10ZA = [\r\n <#if provinceReceivedTrafficSummaryTop10ZA??>\r\n <#list provinceReceivedTrafficSummaryTop10ZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.2 前一周期Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10ZAPre1st= [\r\n <#if provinceReceivedTrafficSummaryTop10ZAPre1st??>\r\n <#list provinceReceivedTrafficSummaryTop10ZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.3 前两周期Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10ZAPre2nd = [\r\n <#if provinceReceivedTrafficSummaryTop10ZAPre2nd??>\r\n <#list provinceReceivedTrafficSummaryTop10ZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3 IDC对外(省Z-A)提供服务TOP3省份的APP的流量占比\r\n // 4.3.1 Top3省份\r\n var provinceTrafficSummaryTop3ZA = [\r\n <#if provinceTrafficSummaryTop3ZA??>\r\n <#list provinceTrafficSummaryTop3ZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.2 前一周期Top3省份\r\n var provinceTrafficSummaryTop3ZAPre1st = [\r\n <#if provinceTrafficSummaryTop3ZAPre1st??>\r\n <#list provinceTrafficSummaryTop3ZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.3 前二周期Top3省份\r\n var provinceTrafficSummaryTop3ZAPre2nd = [\r\n <#if provinceTrafficSummaryTop3ZAPre2nd??>\r\n <#list provinceTrafficSummaryTop3ZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.4 1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyZA = [\r\n <#if firstProvinceTrafficTop5AppCompanyZA??>\r\n <#list firstProvinceTrafficTop5AppCompanyZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.5 前一周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if firstProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list firstProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.6 前二周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if firstProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list firstProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.7 2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyZA = [\r\n <#if secondProvinceTrafficTop5AppCompanyZA??>\r\n <#list secondProvinceTrafficTop5AppCompanyZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.8 前一周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if secondProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list secondProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.9 前二周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if secondProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list secondProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.10 3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyZA = [\r\n <#if thirdProvinceTrafficTop5AppCompanyZA??>\r\n <#list thirdProvinceTrafficTop5AppCompanyZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.11 前一周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if thirdProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list thirdProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.12 前二周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if thirdProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list thirdProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4 IDC对外(省Z-A)提供服务TOP3 APP的省份流量占比\r\n // 4.4.1 Top3 App\r\n var appTrafficSummaryTop3ZA = [\r\n <#if appTrafficSummaryTop3ZA??>\r\n <#list appTrafficSummaryTop3ZA as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.2 前一周期Top3 App\r\n var appTrafficSummaryTop3ZAPre1st = [\r\n <#if appTrafficSummaryTop3ZAPre1st??>\r\n <#list appTrafficSummaryTop3ZAPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.3 前二周期Top3 App\r\n var appTrafficSummaryTop3ZAPre2nd = [\r\n <#if appTrafficSummaryTop3ZAPre2nd??>\r\n <#list appTrafficSummaryTop3ZAPre2nd as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.4 1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceZA = [\r\n <#if firstAppTrafficTop5ProvinceZA??>\r\n <#list firstAppTrafficTop5ProvinceZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.5 前一周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceZAPre1st = [\r\n <#if firstAppTrafficTop5ProvinceZAPre1st??>\r\n <#list firstAppTrafficTop5ProvinceZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.6 前二周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceZAPre2nd = [\r\n <#if firstAppTrafficTop5ProvinceZAPre2nd??>\r\n <#list firstAppTrafficTop5ProvinceZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.7 2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceZA = [\r\n <#if secondAppTrafficTop5ProvinceZA??>\r\n <#list secondAppTrafficTop5ProvinceZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.8 前一周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceZAPre1st = [\r\n <#if secondAppTrafficTop5ProvinceZAPre1st??>\r\n <#list secondAppTrafficTop5ProvinceZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.9 前二周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceZAPre2nd = [\r\n <#if secondAppTrafficTop5ProvinceZAPre2nd??>\r\n <#list secondAppTrafficTop5ProvinceZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.10 3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceZA = [\r\n <#if thirdAppTrafficTop5ProvinceZA??>\r\n <#list thirdAppTrafficTop5ProvinceZA as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.11 前一周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceZAPre1st = [\r\n <#if thirdAppTrafficTop5ProvinceZAPre1st??>\r\n <#list thirdAppTrafficTop5ProvinceZAPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.12 前二周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceZAPre2nd = [\r\n <#if thirdAppTrafficTop5ProvinceZAPre2nd??>\r\n <#list thirdAppTrafficTop5ProvinceZAPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5 IDC内容获取(省A-Z)服务能力的Top10省份请求流量分布\r\n // 4.5.1 top10省份请求流量\r\n var provinceSentTrafficSummaryTop10AZ = [\r\n <#if provinceSentTrafficSummaryTop10AZ??>\r\n <#list provinceSentTrafficSummaryTop10AZ as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5.2 前一周期top10省份请求流量\r\n var provinceSentTrafficSummaryTop10AZPre1st= [\r\n <#if provinceSentTrafficSummaryTop10AZPre1st??>\r\n <#list provinceSentTrafficSummaryTop10AZPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5.3 前两周期top10省份请求流量\r\n var provinceSentTrafficSummaryTop10AZPre2nd = [\r\n <#if provinceSentTrafficSummaryTop10AZPre2nd??>\r\n <#list provinceSentTrafficSummaryTop10AZPre2nd as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6 IDC内容获取(省A-Z)服务能力的Top10省份响应流量分布\r\n // 4.6.1 top10省份响应流量\r\n var provinceReceivedTrafficSummaryTop10AZ = [\r\n <#if provinceReceivedTrafficSummaryTop10AZ??>\r\n <#list provinceReceivedTrafficSummaryTop10AZ as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6.2 前一周期top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10AZPre1st= [\r\n <#if provinceReceivedTrafficSummaryTop10AZPre1st??>\r\n <#list provinceReceivedTrafficSummaryTop10AZPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6.3 前两周期top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10AZPre2nd = [\r\n <#if provinceReceivedTrafficSummaryTop10AZPre2nd??>\r\n <#list provinceReceivedTrafficSummaryTop10AZPre2nd as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7 IDC对内(地市Z- A)服务能力的Top10省内地区请求流量分布\r\n // 4.7.1 top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10ZA = [\r\n <#if inProvinceSentTrafficSummaryTop10ZA??>\r\n <#list inProvinceSentTrafficSummaryTop10ZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7.2 前一周期top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10ZAPre1st = [\r\n <#if inProvinceSentTrafficSummaryTop10ZAPre1st??>\r\n <#list inProvinceSentTrafficSummaryTop10ZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7.3 前两周期top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10ZAPre2nd = [\r\n <#if inProvinceSentTrafficSummaryTop10ZAPre2nd??>\r\n <#list inProvinceSentTrafficSummaryTop10ZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8 IDC对内(地市Z-A)服务能力的Top10省份响应流量分布\r\n // 4.8.1 top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10ZA = [\r\n <#if inProvinceReceivedTrafficSummaryTop10ZA??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8.2 前一周期top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10ZAPre1st = [\r\n <#if inProvinceReceivedTrafficSummaryTop10ZAPre1st??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8.3 前两周期top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10ZAPre2nd = [\r\n <#if inProvinceReceivedTrafficSummaryTop10ZAPre2nd??>\r\n <#list inProvinceReceivedTrafficSummaryTop10ZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n // 4.9.1 IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3ZA = [\r\n <#if inProvinceTrafficSummaryTop3ZA??>\r\n <#list inProvinceTrafficSummaryTop3ZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.2 前一周期IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3ZAPre1st = [\r\n <#if inProvinceTrafficSummaryTop3ZAPre1st??>\r\n <#list inProvinceTrafficSummaryTop3ZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.3 前二周期IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3ZAPre2nd = [\r\n <#if inProvinceTrafficSummaryTop3ZAPre2nd??>\r\n <#list inProvinceTrafficSummaryTop3ZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.4 1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyZA = [\r\n <#if firstInProvinceTrafficTop5AppCompanyZA??>\r\n <#list firstInProvinceTrafficTop5AppCompanyZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.5 前一周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if firstInProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list firstInProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.6 前二周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if firstInProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list firstInProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.7 2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyZA = [\r\n <#if secondInProvinceTrafficTop5AppCompanyZA??>\r\n <#list secondInProvinceTrafficTop5AppCompanyZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.8 前一周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if secondInProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list secondInProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.9 前二周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if secondInProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list secondInProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.10 3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyZA = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyZA??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.11 前一周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyZAPre1st = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyZAPre1st??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.12 前二周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyZAPre2nd = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyZAPre2nd??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n // 4.10.1 IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppZA = [\r\n <#if inProvinceTrafficSummaryTop3AppZA??>\r\n <#list inProvinceTrafficSummaryTop3AppZA as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.2 前一周期IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppZAPre1st = [\r\n <#if inProvinceTrafficSummaryTop3AppZAPre1st??>\r\n <#list inProvinceTrafficSummaryTop3AppZAPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.3 前二周期IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppZAPre2nd = [\r\n <#if inProvinceTrafficSummaryTop3AppZAPre2nd??>\r\n <#list inProvinceTrafficSummaryTop3AppZAPre2nd as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.4 1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionZA = [\r\n <#if firstInProvinceTrafficTop5RegionZA??>\r\n <#list firstInProvinceTrafficTop5RegionZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.5 前一周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionZAPre1st = [\r\n <#if firstInProvinceTrafficTop5RegionZAPre1st??>\r\n <#list firstInProvinceTrafficTop5RegionZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.6 前二周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionZAPre2nd = [\r\n <#if firstInProvinceTrafficTop5RegionZAPre2nd??>\r\n <#list firstInProvinceTrafficTop5RegionZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.7 2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionZA = [\r\n <#if secondInProvinceTrafficTop5RegionZA??>\r\n <#list secondInProvinceTrafficTop5RegionZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.8 前一周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionZAPre1st = [\r\n <#if secondInProvinceTrafficTop5RegionZAPre1st??>\r\n <#list secondInProvinceTrafficTop5RegionZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.9 前二周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionZAPre2nd = [\r\n <#if secondInProvinceTrafficTop5RegionZAPre2nd??>\r\n <#list secondInProvinceTrafficTop5RegionZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.10 3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionZA = [\r\n <#if thirdInProvinceTrafficTop5RegionZA??>\r\n <#list thirdInProvinceTrafficTop5RegionZA as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.11 前一周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionZAPre1st = [\r\n <#if thirdInProvinceTrafficTop5RegionZAPre1st??>\r\n <#list thirdInProvinceTrafficTop5RegionZAPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.12 前二周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionZAPre2nd = [\r\n <#if thirdInProvinceTrafficTop5RegionZAPre2nd??>\r\n <#list thirdInProvinceTrafficTop5RegionZAPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.11 IDC内容获取(地市A-Z)服务能力的Top10省内地区请求流量分布\r\n // 4.11.1 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10AZ = [\r\n <#if inProvinceSentTrafficSummaryTop10AZ??>\r\n <#list inProvinceSentTrafficSummaryTop10AZ as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n\r\n // 4.11.2 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10AZPre1st = [\r\n <#if inProvinceSentTrafficSummaryTop10AZPre1st??>\r\n <#list inProvinceSentTrafficSummaryTop10AZPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.11.3 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10AZPre2nd = [\r\n <#if inProvinceSentTrafficSummaryTop10AZPre2nd??>\r\n <#list inProvinceSentTrafficSummaryTop10AZPre2nd as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12 IDC内容获取(地市A-Z)服务能力的Top10省内地区响应流量分布\r\n // 4.12.1 Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10AZ = [\r\n <#if inProvinceReceivedTrafficSummaryTop10AZ??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZ as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12.2 前一周期Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10AZPre1st = [\r\n <#if inProvinceReceivedTrafficSummaryTop10AZPre1st??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12.3 前两周期Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10AZPre2nd = [\r\n <#if inProvinceReceivedTrafficSummaryTop10AZPre2nd??>\r\n <#list inProvinceReceivedTrafficSummaryTop10AZPre2nd as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 5.1 Top3 IDC租用方流量、会话分布\r\n // 5.1.1 IDC总会话、总流量Top3\r\n var IDCTrafficSessionTop3 = [\r\n <#if IDCTrafficSessionTop3??>\r\n <#list IDCTrafficSessionTop3 as d>\r\n {sessions:${jsGetNumFromObj(d,\'sessions\')},bytes:${jsGetNumFromObj(d,\'bytes\')/ 1024},server_idc_renter:\"${getFromObj(d,\'server_idc_renter\',\'string\')}\"},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 5.1.2 IDC获取内容会话、流量\r\n var IDCWithoutTrafficSessionTop3 = [\r\n <#if IDCWithoutTrafficSessionTop3??>\r\n <#list IDCWithoutTrafficSessionTop3 as d>\r\n {sessions:${jsGetNumFromObj(d,\'sessions\')},bytes:${jsGetNumFromObj(d,\'bytes\')/1024},client_idc_renter:\"${getFromObj(d,\'client_idc_renter\',\'string\')}\"},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n trafficRateTrend = trafficRateTrend.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\'currentRange0\', \'currentRange1\', \'currentRange2\', \'currentRange3\', \'currentRange4\']\r\n var prevRanges = [\'prevRange0\', \'prevRange1\', \'prevRange2\', \'prevRange3\', \'prevRange4\']\r\n var statisticsRanges = [\r\n \'statisticsRange1\',\r\n \'statisticsRange2\',\r\n \'statisticsRange3\',\r\n \'statisticsRange4\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n // 1.2 流量变化曲线\r\n function initEcharts1() {\r\n var seriesData1 = trafficRateTrend.map(d => [d.stat_time, d.rate] )\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (quantile1.rate99 > quantile1.rate90 && quantile1.rate90 > quantile1.rate50 && (quantile1.rate90 && quantile1.rate50 && quantile1.rate99) !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: quantile1.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: quantile1.rate50,\r\n lte: quantile1.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: quantile1.rate90,\r\n lte: quantile1.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: quantile1.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: quantile1.rate50\r\n },\r\n {\r\n yAxis: quantile1.rate90\r\n },\r\n {\r\n yAxis: quantile1.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n textBorderColor: \'white\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n\r\n // 2.1 Top 10 App流量概况\r\n function initEcharts2 () {\r\n var categoryData2 = appCompanyTrafficTop10.map(t => checkXAxisIsEmpty(t.app_company))\r\n var barSeriesData2 = appCompanyTrafficTop10.map(t => {\r\n if (!t.bytes) {\r\n t.bytes = 0\r\n }\r\n return {\r\n value: t.bytes,\r\n percent: trafficSummary.bytes === 0 ? 0 : parseFloat(t.bytes) / trafficSummary.bytes\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n appCompanyTrafficTop10.forEach(t => {\r\n var findData = appCompanyTrafficTop10Pre1st.find(pt => pt.app_company === t.app_company)\r\n if (findData && findData.bytes) {\r\n lineSeriesData1_2.push(findData.bytes === 0 ? 0 : parseFloat(((t.bytes - findData.bytes) / parseFloat(findData.bytes) * 100).toFixed(2)))\r\n var findData2 = appCompanyTrafficTop10Pre2nd.find(ppt => findData.app_company === ppt.app_company)\r\n if (findData2 && findData2.bytes) {\r\n lineSeriesData2_2.push(findData2.bytes === 0 ? 0 : parseFloat(((findData.bytes - findData2.bytes) / parseFloat(findData2.bytes) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].name = \'流量\'\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.1 IDC对外(省Z-A)服务能力Top10省份请求流量分布\r\n function initEcharts3 () {\r\n var categoryData3 = provinceSentTrafficSummaryTop10ZA.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceSentTrafficSummaryTop10ZA.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryToIDC.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryToIDC.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceSentTrafficSummaryTop10ZA.forEach(t => {\r\n var findData = provinceSentTrafficSummaryTop10ZAPre1st.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = provinceSentTrafficSummaryTop10ZAPre2nd.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_3.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 3\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.2 IDC对外(省Z-A)服务能力Top10省份响应流量分布\r\n function initEcharts4 () {\r\n var categoryData4 = provinceReceivedTrafficSummaryTop10ZA.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData4 = provinceReceivedTrafficSummaryTop10ZA.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryToIDC.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryToIDC.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n provinceReceivedTrafficSummaryTop10ZA.forEach(t => {\r\n var findData = provinceReceivedTrafficSummaryTop10ZAPre1st.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_4.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = provinceReceivedTrafficSummaryTop10ZAPre2nd.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_4.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.5 IDC内容获取(省A-Z)服务能力的Top10省份请求流量分布\r\n function initEcharts5 () {\r\n var categoryData5 = provinceSentTrafficSummaryTop10AZ.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData5 = provinceSentTrafficSummaryTop10AZ.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryIDCTo.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryIDCTo.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n provinceSentTrafficSummaryTop10AZ.forEach(t => {\r\n var findData = provinceSentTrafficSummaryTop10AZPre1st.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = provinceSentTrafficSummaryTop10AZPre2nd.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.6 IDC内容获取(省A-Z)服务能力的Top10省份响应流量分布\r\n function initEcharts6 () {\r\n var categoryData6 = provinceReceivedTrafficSummaryTop10AZ.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData6 = provinceReceivedTrafficSummaryTop10AZ.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryIDCTo.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryIDCTo.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_6 = []\r\n // 第二条线\r\n var lineSeriesData2_6 = []\r\n provinceReceivedTrafficSummaryTop10AZ.forEach(t => {\r\n var findData = provinceReceivedTrafficSummaryTop10AZPre1st.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_6.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = provinceReceivedTrafficSummaryTop10AZPre2nd.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_6.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_6.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_6.push(0)\r\n lineSeriesData2_6.push(0)\r\n }\r\n })\r\n var copyLineSeriesData6 = [...lineSeriesData1_6, ...lineSeriesData2_6]\r\n var copyBarSeriesData6 = [...barSeriesData6]\r\n copyLineSeriesData6.sort((a, b) => a - b)\r\n copyBarSeriesData6.sort((a, b) => a.value - b.value)\r\n var barMax6 = copyBarSeriesData6.length > 0 ? copyBarSeriesData6[copyBarSeriesData6.length - 1].value : 50\r\n var lineMin6 = copyLineSeriesData6[0] ? copyLineSeriesData6[0] : 0\r\n var lineMax6 = copyLineSeriesData6.length > 0 ? copyLineSeriesData6[copyLineSeriesData6.length - 1] : 0\r\n if (lineMin6 == 0 && lineMin6 == lineMax6) {\r\n lineMin6 = -5\r\n lineMax6 = 1\r\n } else {\r\n var tempLineMin6 = lineMin6\r\n lineMin6 = lineMin6 - 2.5 * (lineMax6 - lineMin6)\r\n lineMax6 = lineMax6 + 0.5 * (lineMax6 - tempLineMin6)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas6\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData6\r\n option.yAxis[0].max = barMax6 * 2\r\n option.yAxis[1].min = lineMin6\r\n option.yAxis[1].max = lineMax6\r\n option.series[0].data = barSeriesData6\r\n option.series[1].data = lineSeriesData1_6\r\n option.series[2].data = lineSeriesData2_6\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.7 IDC对内(地市Z- A)服务能力的Top10省内地区请求流量分布\r\n function initEcharts7 () {\r\n var categoryData7 = inProvinceSentTrafficSummaryTop10ZA.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData7 = inProvinceSentTrafficSummaryTop10ZA.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: inProvinceTrafficSummaryToIDC.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / inProvinceTrafficSummaryToIDC.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_7 = []\r\n // 第二条线\r\n var lineSeriesData2_7 = []\r\n inProvinceSentTrafficSummaryTop10ZA.forEach(t => {\r\n var findData = inProvinceSentTrafficSummaryTop10ZAPre1st.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_7.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = inProvinceSentTrafficSummaryTop10ZAPre2nd.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_7.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_7.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_7.push(0)\r\n lineSeriesData2_7.push(0)\r\n }\r\n })\r\n var copyLineSeriesData7 = [...lineSeriesData1_7, ...lineSeriesData2_7]\r\n var copyBarSeriesData7 = [...barSeriesData7]\r\n copyLineSeriesData7.sort((a, b) => a - b)\r\n copyBarSeriesData7.sort((a, b) => a.value - b.value)\r\n var barMax7 = copyBarSeriesData7.length > 0 ? copyBarSeriesData7[copyBarSeriesData7.length - 1].value : 50\r\n var lineMin7 = copyLineSeriesData7[0] ? copyLineSeriesData7[0] : 0\r\n var lineMax7 = copyLineSeriesData7.length > 0 ? copyLineSeriesData7[copyLineSeriesData7.length - 1] : 0\r\n if (lineMin7 == 0 && lineMin7 == lineMax7) {\r\n lineMin7 = -5\r\n lineMax7 = 1\r\n } else {\r\n var tempLineMin7 = lineMin7\r\n lineMin7 = lineMin7 - 2.5 * (lineMax7 - lineMin7)\r\n lineMax7 = lineMax7 + 0.5 * (lineMax7 - tempLineMin7)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas7\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData7\r\n option.yAxis[0].max = barMax7 * 2\r\n option.yAxis[1].min = lineMin7\r\n option.yAxis[1].max = lineMax7\r\n option.series[0].data = barSeriesData7\r\n option.series[1].data = lineSeriesData1_7\r\n option.series[2].data = lineSeriesData2_7\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.8 IDC对内(地市Z-A)服务能力的Top10省份响应流量分布\r\n function initEcharts8 () {\r\n var categoryData8 = inProvinceReceivedTrafficSummaryTop10ZA.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData8 = inProvinceReceivedTrafficSummaryTop10ZA.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: inProvinceTrafficSummaryToIDC.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / inProvinceTrafficSummaryToIDC.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n inProvinceReceivedTrafficSummaryTop10ZA.forEach(t => {\r\n var findData = inProvinceReceivedTrafficSummaryTop10ZAPre1st.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = inProvinceReceivedTrafficSummaryTop10ZAPre2nd.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.11 IDC内容获取(地市A-Z)服务能力的Top10省内地区请求流量分布\r\n function initEcharts9 () {\r\n var categoryData9 = inProvinceSentTrafficSummaryTop10AZ.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData9 = inProvinceSentTrafficSummaryTop10AZ.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: inProvinceTrafficSummaryIDCTo.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / inProvinceTrafficSummaryIDCTo.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n inProvinceSentTrafficSummaryTop10AZ.forEach(t => {\r\n var findData = inProvinceSentTrafficSummaryTop10AZPre1st.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_9.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = inProvinceSentTrafficSummaryTop10AZPre2nd.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_9.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.12 IDC内容获取(地市A-Z)服务能力的Top10省内地区响应流量分布\r\n function initEcharts10 () {\r\n var categoryData10 = inProvinceReceivedTrafficSummaryTop10AZ.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = inProvinceReceivedTrafficSummaryTop10AZ.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: inProvinceTrafficSummaryIDCTo.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / inProvinceTrafficSummaryIDCTo.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n inProvinceReceivedTrafficSummaryTop10AZ.forEach(t => {\r\n var findData = inProvinceReceivedTrafficSummaryTop10AZPre1st.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = inProvinceReceivedTrafficSummaryTop10AZPre2nd.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n var option = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n // 4.9 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n function initEcharts11 () {\r\n var province11 = inProvinceTrafficSummaryTop3ZA[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province11, inProvinceTrafficSummaryTop3ZAPre1st, inProvinceTrafficSummaryTop3ZAPre2nd, firstInProvinceTrafficTop5AppCompanyZA, firstInProvinceTrafficTop5AppCompanyZAPre1st, firstInProvinceTrafficTop5AppCompanyZAPre2nd, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts12 () {\r\n var province12 = inProvinceTrafficSummaryTop3ZA[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province12, inProvinceTrafficSummaryTop3ZAPre1st, inProvinceTrafficSummaryTop3ZAPre2nd, secondInProvinceTrafficTop5AppCompanyZA, secondInProvinceTrafficTop5AppCompanyZAPre1st, secondInProvinceTrafficTop5AppCompanyZAPre2nd, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas12\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts13 () {\r\n var province13 = inProvinceTrafficSummaryTop3ZA[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province13, inProvinceTrafficSummaryTop3ZAPre1st, inProvinceTrafficSummaryTop3ZAPre2nd, thirdInProvinceTrafficTop5AppCompanyZA, thirdInProvinceTrafficTop5AppCompanyZAPre1st, thirdInProvinceTrafficTop5AppCompanyZAPre2nd, \'client_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.10 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n function initEcharts14 () {\r\n var province14 = inProvinceTrafficSummaryTop3AppZA[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province14, inProvinceTrafficSummaryTop3AppZAPre1st, inProvinceTrafficSummaryTop3AppZAPre2nd, firstInProvinceTrafficTop5RegionZA, firstInProvinceTrafficTop5RegionZAPre1st, firstInProvinceTrafficTop5RegionZAPre2nd, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts15 () {\r\n var province15 = inProvinceTrafficSummaryTop3AppZA[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province15, inProvinceTrafficSummaryTop3AppZAPre1st, inProvinceTrafficSummaryTop3AppZAPre2nd, secondInProvinceTrafficTop5RegionZA, secondInProvinceTrafficTop5RegionZAPre1st, secondInProvinceTrafficTop5RegionZAPre2nd, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas15\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts16 () {\r\n var province16 = inProvinceTrafficSummaryTop3AppZA[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province16, inProvinceTrafficSummaryTop3AppZAPre1st, inProvinceTrafficSummaryTop3AppZAPre2nd, thirdInProvinceTrafficTop5RegionZA, thirdInProvinceTrafficTop5RegionZAPre1st, thirdInProvinceTrafficTop5RegionZAPre2nd, \'app_company\', \'client_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas16\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n // 5.1 Top3 IDC租用方流量、会话分布\r\n function initEcharts18 () {\r\n var categoryData18 = [\'获取内容的会话数\', \'提供服务的会话数\']\r\n var seriesData18 = []\r\n var bar1Object = IDCTrafficSessionTop3[0]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData18[0] = bar2Object ? (bar2Object.sessions || 0) : 0\r\n seriesData18[1] = bar1Object.sessions || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData18,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.number).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData18,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.number).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n textBorderColor: \'white\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts19 () {\r\n var categoryData19 = [\'获取内容的会话数\', \'提供服务的会话数\']\r\n var seriesData19 = []\r\n var bar1Object = IDCTrafficSessionTop3[1]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData19[0] = bar2Object ? (bar2Object.sessions || 0) : 0\r\n seriesData19[1] = bar1Object.sessions || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData19,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.number).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData19,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.number).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts20 () {\r\n var unit20 = \'KB\'\r\n var categoryData20 = [\'获取内容的会话数\', \'提供服务的会话数\']\r\n var seriesData20 = []\r\n var bar1Object = IDCTrafficSessionTop3[2]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData20[0] = bar2Object ? (bar2Object.sessions || 0) : 0\r\n seriesData20[1] = bar1Object.sessions || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas20\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData20,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.number).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData20,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.number).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n textBorderColor: \'white\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts21 () {\r\n var unit21 = \'KB\'\r\n var categoryData21 = [\'获取内容的会话总流量\', \'提供服务的会话总流量\']\r\n var seriesData21 = []\r\n var bar1Object = IDCTrafficSessionTop3[0]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData21[0] = bar2Object ? (bar2Object.bytes || 0) : 0\r\n seriesData21[1] = bar1Object.bytes || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas21\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData21,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, unit21).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData21,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, unit21).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts22 () {\r\n var unit22 = \'KB\'\r\n var categoryData22 = [\'获取内容的会话总流量\', \'提供服务的会话总流量\']\r\n var seriesData22 = []\r\n var bar1Object = IDCTrafficSessionTop3[1]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData22[0] = bar2Object ? (bar2Object.bytes || 0) : 0\r\n seriesData22[1] = bar1Object.bytes || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas22\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData22,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, unit22).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData22,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, unit22).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n textBorderColor: \'white\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts23 () {\r\n var unit23 = \'KB\'\r\n var categoryData23 = [\'获取内容的会话总流量\', \'提供服务的会话总流量\']\r\n var seriesData23 = []\r\n var bar1Object = IDCTrafficSessionTop3[2]\r\n var title = \'\'\r\n if (bar1Object) {\r\n title = bar1Object.server_idc_renter\r\n var bar2Object = IDCWithoutTrafficSessionTop3.find(d => d.client_idc_renter === title)\r\n seriesData23[0] = bar2Object ? (bar2Object.bytes || 0) : 0\r\n seriesData23[1] = bar1Object.bytes || 0\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas23\')\r\n var option = {\r\n animation: false,\r\n title: [\r\n {\r\n text: title,\r\n left: \'center\',\r\n bottom: 0\r\n }\r\n ],\r\n grid: {\r\n top: 50,\r\n bottom: 60,\r\n right: 40,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n data: categoryData23,\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, unit23).join(\'\')\r\n }\r\n }\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'流量\',\r\n data: seriesData23,\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, unit23).join(\'\')\r\n },\r\n distance: 3,\r\n color: \'rgb(59,162,201)\',\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: \'rgb(59,162,201)\'\r\n }\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.3 IDC对外(省Z-A)提供服务TOP3省份的APP的流量占比\r\n function initEcharts24 () {\r\n var province24 = provinceTrafficSummaryTop3ZA[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province24, provinceTrafficSummaryTop3ZAPre1st, provinceTrafficSummaryTop3ZAPre2nd, firstProvinceTrafficTop5AppCompanyZA, firstProvinceTrafficTop5AppCompanyZAPre1st, firstProvinceTrafficTop5AppCompanyZAPre2nd, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas24\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts25 () {\r\n var province25 = provinceTrafficSummaryTop3ZA[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province25, provinceTrafficSummaryTop3ZAPre1st, provinceTrafficSummaryTop3ZAPre2nd, secondProvinceTrafficTop5AppCompanyZA, secondProvinceTrafficTop5AppCompanyZAPre1st, secondProvinceTrafficTop5AppCompanyZAPre2nd, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas25\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts26 () {\r\n var province26 = provinceTrafficSummaryTop3ZA[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province26, provinceTrafficSummaryTop3ZAPre1st, provinceTrafficSummaryTop3ZAPre2nd, thirdProvinceTrafficTop5AppCompanyZA, thirdProvinceTrafficTop5AppCompanyZAPre1st, thirdProvinceTrafficTop5AppCompanyZAPre2nd, \'client_super_admin_area\', \'app_company\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas26\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.4 IDC对外(省Z-A)提供服务TOP3 APP的省份流量占比\r\n function initEcharts27 () {\r\n var province27 = appTrafficSummaryTop3ZA[0]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province27, appTrafficSummaryTop3ZAPre1st, appTrafficSummaryTop3ZAPre2nd, firstAppTrafficTop5ProvinceZA, firstAppTrafficTop5ProvinceZAPre1st, firstAppTrafficTop5ProvinceZAPre2nd, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas27\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts28() {\r\n var province28 = appTrafficSummaryTop3ZA[1]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province28, appTrafficSummaryTop3ZAPre1st, appTrafficSummaryTop3ZAPre2nd, secondAppTrafficTop5ProvinceZA, secondAppTrafficTop5ProvinceZAPre1st, secondAppTrafficTop5ProvinceZAPre2nd, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas28\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts29 () {\r\n var province29 = appTrafficSummaryTop3ZA[2]\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province29, appTrafficSummaryTop3ZAPre1st, appTrafficSummaryTop3ZAPre2nd, thirdAppTrafficTop5ProvinceZA, thirdAppTrafficTop5ProvinceZAPre1st, thirdAppTrafficTop5ProvinceZAPre2nd, \'app_company\', \'client_super_admin_area\', \'bytes\')\r\n var myChart = initEchartsInstance(\'canvas29\')\r\n option.xAxis.data = categoryData\r\n option.series[2].data = seriesData\r\n option.series[1].data = prevSeriesData\r\n option.series[0].data = pprevSeriesData\r\n myChart.setOption(option)\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts6() } catch (e) { console.error(e) }\r\n try { initEcharts7() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts12() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts15() } catch (e) { console.error(e) }\r\n try { initEcharts16() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initEcharts20() } catch (e) { console.error(e) }\r\n try { initEcharts21() } catch (e) { console.error(e) }\r\n try { initEcharts22() } catch (e) { console.error(e) }\r\n try { initEcharts23() } catch (e) { console.error(e) }\r\n try { initEcharts24() } catch (e) { console.error(e) }\r\n try { initEcharts25() } catch (e) { console.error(e) }\r\n try { initEcharts26() } catch (e) { console.error(e) }\r\n try { initEcharts27() } catch (e) { console.error(e) }\r\n try { initEcharts28() } catch (e) { console.error(e) }\r\n try { initEcharts29() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummary\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRatePre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRatePre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryToIDC\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryToIDCPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryIDCTo\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryIDCToPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryToIDC\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryToIDCPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') \",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryIDCTo\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\')\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryIDCToPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRateTrend\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10Pre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10Pre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentAZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentAZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateAZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateAZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, SUM(sent_pkts + received_pkts) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentTop10AppCompany\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, SUM(sent_pkts + received_pkts) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentTop10AppCompanyPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateTop10AppCompany\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateTop10AppCompanyPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(client_super_admin_area) AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10AZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10AZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10AZPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10AZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10AZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10AZPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3ZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3ZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3ZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND notEmpty(app_company) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionZA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionZAPre2nd\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"thirdInProvinceTrafficTop5RegionZA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"thirdInProvinceTrafficTop5RegionZAPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionZAPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10AZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10AZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10AZPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10AZ\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10AZPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\', \'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10AZPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, SUM(sent_bytes + received_bytes) AS bytes, server_ip_tags AS server_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_ip_tags) GROUP BY server_ip_tags ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"IDCTrafficSessionTop3\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sessions) AS sessions, SUM(sent_bytes + received_bytes) AS bytes, client_ip_tags AS client_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND client_ip_tags IN ( SELECT server_ip_tags FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_ip_tags) GROUP BY server_ip_tags ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3) GROUP BY client_ip_tags ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"IDCWithoutTrafficSessionTop3\"\r\n }\r\n ]\r\n}\r\n\r\n\r\n', 1, '2022-06-21 14:59:02', 1, '2022-06-21 14:59:08', NULL); +INSERT INTO `report_category` VALUES (3, '出入口提供商报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>出入口服务提供商${Provider}监测报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">出入口服务提供商${Provider}监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 出入口${Provider}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 省外访问省内${Provider}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 省内访问省外的${Provider}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 省内访问省外${Provider}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 省内访问省外${Provider}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 省外访问省内${Provider}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 省外访问省内${Provider}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 省内访问省外${Provider}服务的Top 10 省内地区的请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 省内访问省外${Provider}服务的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省外访问省内${Provider}服务的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省外访问省内${Provider}服务的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n<div class=\"header2\">四.链路方向流量构成</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas42\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图12 省内访问省外${Provider}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas49\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas50\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas51\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas52\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas53\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas54\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange9\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange20\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange20\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图13 省内访问省外${Provider}各链路Top5 省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas55\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图14 省外访问省内${Provider}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas62\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas63\" ></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas64\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas65\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas \" id=\"canvas66\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas67\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange11\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange22\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange22\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图15 省外访问省内${Provider}各链路Top5 省份流量占比</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n // xxx服务总流量 (xxxService traffic total)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前一周期(Pre 1st xxxService traffic total)\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期(Pre 2st xxxService traffic total)\r\n var pre2ndxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 省外访问省内服${Provider}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${Provider}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${Provider}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${Provider}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量情况\r\n // 省外访问省内${Provider}服务的服务质量\r\n // TCP会话创建延迟(xxxService Out2in TCP)\r\n var xxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in TCP)\r\n var pre1stxxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService Out2in retrans packets)\r\n var xxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in retrans packets)\r\n var pre1stxxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 省内访问省外${Provider}的服务质量\r\n // TCP会话创建延迟(xxxService In2out TCP)\r\n var xxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out TCP)\r\n var pre1stxxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService In2out retrans packets)\r\n var xxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out retrans packets)\r\n var pre1stxxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${Provider}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${Provider}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${Provider}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${Provider}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${Provider}服务)\r\n var regionIn2outSentTrafficBytesTop10 = [\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${Provider}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIn2outReceivedTrafficBytesTop10 = [\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionAZReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionAZReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionAZReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${Provider}服务)\r\n var regionOut2inSentTrafficBytesTop10 = [\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${Provider}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionOut2inReceivedTrafficBytesTop10 = [\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1 ${Provider}服务省内访问省外\r\n var linkDirectionTrafficIn2Out = [\r\n <#if linkDirectionTrafficIn2Out??>\r\n <#list linkDirectionTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 各链路Top5指标流量占比\r\n // 上行链路总流量统计\r\n var linkEgressTrafficIn2Out = [\r\n <#if linkEgressTrafficIn2Out??>\r\n <#list linkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficIn2Out = [\r\n <#if pre1stLinkEgressTrafficIn2Out??>\r\n <#list pre1stLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficIn2Out = [\r\n <#if pre2ndLinkEgressTrafficIn2Out??>\r\n <#list pre2ndLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficIn2Out = [\r\n <#if linkIngressTrafficIn2Out??>\r\n <#list linkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficIn2Out = [\r\n <#if pre1stLinkIngressTrafficIn2Out??>\r\n <#list pre1stLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficIn2Out = [\r\n <#if pre2ndLinkIngressTrafficIn2Out??>\r\n <#list pre2ndLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 省外访问省内\r\n var linkDirectionTrafficOut2In = [\r\n <#if linkDirectionTrafficOut2In??>\r\n <#list linkDirectionTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n // 上行链路总流量统计\r\n // 各链路上行总流量-本周期\r\n var linkEgressTrafficOut2In = [\r\n <#if linkEgressTrafficOut2In??>\r\n <#list linkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficOut2In = [\r\n <#if pre1stLinkEgressTrafficOut2In??>\r\n <#list pre1stLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficOut2In = [\r\n <#if pre2ndLinkEgressTrafficOut2In??>\r\n <#list pre2ndLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficOut2In = [\r\n <#if linkIngressTrafficOut2In??>\r\n <#list linkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficOut2In = [\r\n <#if pre1stLinkIngressTrafficOut2In??>\r\n <#list pre1stLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficOut2In = [\r\n <#if pre2ndLinkIngressTrafficOut2In??>\r\n <#list pre2ndLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if linkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list linkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if linkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list linkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n \r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外字节跳动服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内字节跳动服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外字节跳动服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData4 = regionIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2outSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData10 = regionIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionAZReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内字节跳动服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData5 = regionOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData11 = regionOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n // 省内访问省外\r\n function initEcharts42 () {\r\n var Data42 = []\r\n var Links42 = []\r\n linkDirectionTrafficIn2Out.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data42.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links42 = linkDirectionTrafficIn2Out.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data42 = Array.from(new Set(Data42))\r\n Data42 = Data42.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas42\')\r\n sankeyOption.series[0].data = Data42\r\n sankeyOption.series[0].links = Links42\r\n myChart.setOption(sankeyOption)\r\n }\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts49 () {\r\n var province49 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province49, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXN, pre1stLinkEgressTrafficTopNProvinceIn2OutXN, pre2ndLinkEgressTrafficTopNProvinceIn2OutXN, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas49\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts50 () {\r\n var province50 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province50, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutTY, pre1stLinkEgressTrafficTopNProvinceIn2OutTY, pre2ndLinkEgressTrafficTopNProvinceIn2OutTY, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas50\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts51 () {\r\n var province51 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province51, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXA, pre1stLinkEgressTrafficTopNProvinceIn2OutXA, pre2ndLinkEgressTrafficTopNProvinceIn2OutXA, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas51\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts52 () {\r\n var province52 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province52, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXN, pre1stLinkIngressTrafficTopNProvinceIn2OutXN, pre2ndLinkIngressTrafficTopNProvinceIn2OutXN, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n\r\n var myChart = initEchartsInstance(\'canvas52\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts53 () {\r\n var province53 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province53, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutTY, pre1stLinkIngressTrafficTopNProvinceIn2OutTY, pre2ndLinkIngressTrafficTopNProvinceIn2OutTY, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas53\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts54 () {\r\n var province54 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province54, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXA, pre1stLinkIngressTrafficTopNProvinceIn2OutXA, pre2ndLinkIngressTrafficTopNProvinceIn2OutXA, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas54\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 省外访问省内\r\n function initEcharts55 () {\r\n var Data55 = []\r\n var Links55 = []\r\n linkDirectionTrafficOut2In.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data55.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links55 = linkDirectionTrafficOut2In.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data55 = Array.from(new Set(Data55))\r\n Data55 = Data55.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas55\')\r\n sankeyOption.series[0].data = Data55\r\n sankeyOption.series[0].links = Links55\r\n myChart.setOption(sankeyOption)\r\n }\r\n\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts62 () {\r\n var province62 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province62, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXN, pre1stLinkEgressTrafficTopNProvinceOut2InXN, pre2ndLinkEgressTrafficTopNProvinceOut2InXN, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas62\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts63 () {\r\n var province63 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province63, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InTY, pre1stLinkEgressTrafficTopNProvinceOut2InTY, pre2ndLinkEgressTrafficTopNProvinceOut2InTY, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas63\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts64 () {\r\n var province64 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province64, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXA, pre1stLinkEgressTrafficTopNProvinceOut2InXA, pre2ndLinkEgressTrafficTopNProvinceOut2InXA, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas64\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts65 () {\r\n var province65 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province65, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXN, pre1stLinkIngressTrafficTopNProvinceOut2InXN, pre2ndLinkIngressTrafficTopNProvinceOut2InXN, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas65\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts66 () {\r\n var province66 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province66, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InTY, pre1stLinkIngressTrafficTopNProvinceOut2InTY, pre2ndLinkIngressTrafficTopNProvinceOut2InTY, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas66\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts67 () {\r\n var province67 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province67, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXA, pre1stLinkIngressTrafficTopNProvinceOut2InXA, pre2ndLinkIngressTrafficTopNProvinceOut2InXA, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas67\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts42() } catch (e) { console.error(e) }\r\n try { initEcharts49() } catch (e) { console.error(e) }\r\n try { initEcharts50() } catch (e) { console.error(e) }\r\n try { initEcharts51() } catch (e) { console.error(e) }\r\n try { initEcharts52() } catch (e) { console.error(e) }\r\n try { initEcharts53() } catch (e) { console.error(e) }\r\n try { initEcharts54() } catch (e) { console.error(e) }\r\n try { initEcharts55() } catch (e) { console.error(e) }\r\n try { initEcharts62() } catch (e) { console.error(e) }\r\n try { initEcharts63() } catch (e) { console.error(e) }\r\n try { initEcharts64() } catch (e) { console.error(e) }\r\n try { initEcharts65() } catch (e) { console.error(e) }\r\n try { initEcharts66() } catch (e) { console.error(e) }\r\n try { initEcharts67() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"Provider\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.provider\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app_company IN (\'${Provider}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app_company IN (\'${Provider}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app_company IN (\'${Provider}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app_company IN (\'${Provider}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(received_bytes) AS ingress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(received_bytes) AS egress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app_company IN (\'${Provider}\')) AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXA\"\r\n }\r\n ]\r\n}', 1, '2022-06-29 17:26:04', 1, '2022-06-29 17:26:08', NULL); +INSERT INTO `report_category` VALUES (4, '出入口网络质量报告', '<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<#setting number_format=\"0.####\"/>\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <title>出入口整体流量监测报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">出入口整体流量监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n </div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficRate,0,\'rate_avg\',\'number\'),getFromArr(trafficRatePre1st,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficRatePre1st,0,\'rate_avg\',\'number\'),getFromArr(trafficRatePre2nd,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(trafficSummary,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficSummary,0,\'bytes\',\'number\'),getFromArr(trafficSummaryPre1st,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(trafficSummaryPre1st,0,\'bytes\',\'number\'),getFromArr(trafficSummaryPre2nd,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务流量排名</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">APP流量速率</th>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图2 TOP10 APP流量情况</div>\r\n</div>\r\n\r\n<div class=\"header2\">三.服务质量概况</div>\r\n<div class=\"header3\">1.整体质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 省外访问省内的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(TCPConnectionEstablishmentOut2In,0,\'establish_latency_avg\',\'number\'),getFromArr(TCPConnectionEstablishmentOut2InPre1st,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(packetRetransRateOut2In,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(packetRetransRateOut2InPre1st,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 省内访问省外的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(TCPConnectionEstablishmentIn2Out,0,\'establish_latency_avg\',\'number\'),getFromArr(TCPConnectionEstablishmentIn2OutPre1st,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_p50\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_p90\',\'number\'))}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertPercent(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_p99\',\'number\'))}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(packetRetransRateIn2Out,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(packetRetransRateIn2OutPre1st,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"header3\">2.业务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表4 TOP10 APP服务质量情况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th rowspan=\"2\" class=\"table__th\">APP</th>\r\n <th rowspan=\"2\" class=\"table__th\">流量占比</th>\r\n <th colspan=\"3\" class=\"table__th\">TCP会话延迟(ms)</th>\r\n <th colspan=\"3\" class=\"table__th\">重传率</th>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as val>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">${getFromObj(val,\'app_company\',\'string\')}</td>\r\n <td class=\"table__td\">${proportion(getFromObj(val,\'bytes\',\'number\'),getFromArr(trafficSummary,0,\'bytes\',\'number\'))}</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(TCPConnectionEstablishmentTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany)][\'establish_latency_p50\'])}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(TCPConnectionEstablishmentTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany)][\'establish_latency_p90\'])}</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${convertTime(TCPConnectionEstablishmentTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany)][\'establish_latency_p99\'])}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(TCPConnectionEstablishmentTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, TCPConnectionEstablishmentTop10AppCompany)][\'establish_latency_avg\'])}\r\n </td>\r\n <td class=\"table__td\">\r\n ${getChainRatio(val[\'app_company\'],\"app_company\",\"establish_latency_avg\",TCPConnectionEstablishmentTop10AppCompany,TCPConnectionEstablishmentTop10AppCompanyPre1st)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${(packetRetransRateTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany)][\'pkt_retrans_percent_p50\'] * 100)?string(\"#.##\")}%</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${(packetRetransRateTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany)][\'pkt_retrans_percent_p90\'] * 100)?string(\"#.##\")}%</div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">${(packetRetransRateTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany)][\'pkt_retrans_percent_p99\'] * 100)?string(\"#.##\")}%</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <#if packetRetransRateTop10AppCompany?? && findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany) != -1>\r\n ${(packetRetransRateTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany)][\'pkt_retrans_percent_avg\'] * 100)?string(\"#.##\")}%\r\n <#else>\r\n —\r\n </#if>\r\n </td>\r\n <td class=\"table__td\">\r\n <#if packetRetransRateTop10AppCompany?? && packetRetransRateTop10AppCompanyPre1st?? && findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany) != -1 && findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompanyPre1st) != -1\r\n && packetRetransRateTop10AppCompanyPre1st[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompanyPre1st)][\'pkt_retrans_percent_avg\'] !=0 >\r\n ${((packetRetransRateTop10AppCompany[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompany)][\'pkt_retrans_percent_avg\'] - packetRetransRateTop10AppCompanyPre1st[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompanyPre1st)][\'pkt_retrans_percent_avg\']) / packetRetransRateTop10AppCompanyPre1st[findRecordByName(val[\'app_company\'], \'app_company\', val, packetRetransRateTop10AppCompanyPre1st)][\'pkt_retrans_percent_avg\'] * 100)?string(\"#.##\")}%\r\n <#else>\r\n —\r\n </#if>\r\n </td>\r\n </tr>\r\n </#list>\r\n </#if>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">四.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceSentTrafficSummaryTop10In2Out??>\r\n <#list provinceSentTrafficSummaryTop10In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceSentTrafficSummaryTop10In2Out??>\r\n <#list provinceSentTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceSentTrafficSummaryTop10In2Out??>\r\n <#list provinceSentTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图3 省内访问省外的TOP10省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list provinceReceivedTrafficSummaryTop10In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list provinceReceivedTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list provinceReceivedTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 省内访问省外的Top10省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if provinceTrafficSummaryTop3In2Out??>\r\n <#list provinceTrafficSummaryTop3In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas24\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas25\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas26\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange0\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange1\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange1\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图5 省内访问省外的TOP3省份的APP流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if appTrafficSummaryTop3In2Out??>\r\n <#list appTrafficSummaryTop3In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas27\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas28\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas29\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange1\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange2\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange2\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图6 省内访问省外的TOP3 APP的各省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceSentTrafficSummaryTop10Out2In??>\r\n <#list provinceSentTrafficSummaryTop10Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceSentTrafficSummaryTop10Out2In??>\r\n <#list provinceSentTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceSentTrafficSummaryTop10Out2In??>\r\n <#list provinceSentTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 省外访问省内的TOP10省份的请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas6\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 省外访问省内的TOP10省份的响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if provinceTrafficSummaryTop3Out2In??>\r\n <#list provinceTrafficSummaryTop3Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas30\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas31\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas32\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange2\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange9\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange9\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图9 省外访问省内的TOP3省份的APP流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if appTrafficSummaryTop3Out2In??>\r\n <#list appTrafficSummaryTop3Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas33\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas34\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas35\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange3\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange10\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange10\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图10 省外访问省内的TOP3 APP的各省份流量占比</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas7\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceSentTrafficSummaryTop10In2Out??>\r\n <#list inProvinceSentTrafficSummaryTop10In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceSentTrafficSummaryTop10In2Out??>\r\n <#list inProvinceSentTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceSentTrafficSummaryTop10In2Out??>\r\n <#list inProvinceSentTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问省外的TOP10省内地区的请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2Out as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 省内访问省外的TOP10省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3In2Out??>\r\n <#list inProvinceTrafficSummaryTop3In2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas11\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas12\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas13\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange4\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange3\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange3\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图13 省内访问省外的TOP3省内地区的APP流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3AppIn2Out??>\r\n <#list inProvinceTrafficSummaryTop3AppIn2Out as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas14\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas15\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas16\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange5\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange4\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange4\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图14 省内访问省外的TOP3 APP的省内地区流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceSentTrafficSummaryTop10Out2In??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceSentTrafficSummaryTop10Out2In??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceSentTrafficSummaryTop10Out2In??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图15 省外访问省内的TOP10省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2In as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'bytes_received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图16 省外访问省内的TOP10省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3Out2In??>\r\n <#list inProvinceTrafficSummaryTop3Out2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas36\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas37\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas38\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange6\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange17\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange17\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图17 省外访问省内的TOP3省内地区的APP流量占比</div>\r\n\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <#if inProvinceTrafficSummaryTop3AppOut2In??>\r\n <#list inProvinceTrafficSummaryTop3AppOut2In as val>\r\n <th class=\"table__th\">${getFromObj(val,\'app_company\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas39\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas40\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas41\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange7\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange18\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange18\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图18 省外访问省内的TOP3 APP的省内地区流量占比</div>\r\n<div class=\"header2\">五.链路方向流量构成</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas42\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图19 省内访问省外会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas43\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas44\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas45\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas46\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas47\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas48\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange8\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange19\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange19\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图20 省内访问省外各链路Top5 APP流量占比</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas49\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas50\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas51\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas52\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas53\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas54\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange9\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange20\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange20\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图21 省内访问省外各链路Top5 省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas55\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图22 省外访问省内会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas56\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas57\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas58\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas59\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas60\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas61\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange10\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange21\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange21\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图23 省外访问省内各链路Top5 APP流量占比</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas62\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas63\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas64\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas65\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas66\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas67\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange11\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange22\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange22\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图24 省外访问省内各链路Top5 省份流量占比</div>\r\n\r\n<script>\r\n /** 数据 start */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n var timeZoneOffset = ${timeZoneOffset}\r\n // 1.1.1 总流量\r\n var trafficSummary = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummary,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummary,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummary,0,\'bytes\')/1024},\r\n sessions:${jsGetNumFromArr(trafficSummary,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.2 前一周期总流量\r\n var trafficSummaryPre1st = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryPre1st,0,\'bytes\')/1024},\r\n sessions:${jsGetNumFromArr(trafficSummaryPre1st,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.3 前两周期总流量\r\n var trafficSummaryPre2nd = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryPre2nd,0,\'bytes\')/1024},\r\n sessions:${jsGetNumFromArr(trafficSummaryPre2nd,0,\'sessions\')}\r\n }\r\n\r\n // 1.1.4 流量速率\r\n var trafficRate = {\r\n rate50:${jsGetNumFromArr(trafficRate,0,\'rate50\')/1000},\r\n rate90:${jsGetNumFromArr(trafficRate,0,\'rate90\')/1000},\r\n rate99:${jsGetNumFromArr(trafficRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRate,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.5 前一周期流量速率\r\n var trafficRatePre1st = {\r\n rate50:${jsGetNumFromArr(trafficRatePre1st,0,\'rate50\')/1000},\r\n rate90:${jsGetNumFromArr(trafficRatePre1st,0,\'rate90\')/1000},\r\n rate99:${jsGetNumFromArr(trafficRatePre1st,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRatePre1st,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.6 前两周期流量速率\r\n var trafficRatePre2nd = {\r\n rate50:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate50\')/1000},\r\n rate90:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate90\')/1000},\r\n rate99:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(trafficRatePre2nd,0,\'rate_min\')/1000}\r\n }\r\n\r\n // 1.1.7 域外访问域内总流量\r\n var trafficSummaryOut2In = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryOut2In,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryOut2In,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryOut2In,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.8 前一周期域外访问域内总流量\r\n var trafficSummaryOut2InPre1st = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryOut2InPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryOut2InPre1st,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryOut2InPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.9 域内访问域外总流量\r\n var trafficSummaryIn2Out = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryIn2Out,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryIn2Out,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryIn2Out,0,\'bytes\')/1024}\r\n }\r\n\r\n // 1.1.10 前一周期域内访问域外总流量\r\n var trafficSummaryIn2OutPre1st = {\r\n bytes_sent:${jsGetNumFromArr(trafficSummaryIn2OutPre1st,0,\'bytes_sent\')/1024},\r\n bytes_received:${jsGetNumFromArr(trafficSummaryIn2OutPre1st,0,\'bytes_received\')/1024},\r\n bytes:${jsGetNumFromArr(trafficSummaryIn2OutPre1st,0,\'bytes\')/1024}\r\n }\r\n\r\n\r\n // 1. 整体流量\r\n // 1.2.1 流量变化曲线\r\n var trafficRateTrend = [\r\n <#if trafficRateTrend??>\r\n <#list trafficRateTrend as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000}, rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 流量速率\r\n var quantile1 = {\r\n rate50: ${jsGetNumFromArr(trafficRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(trafficRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(trafficRate,0,\'rate99\')/1000},\r\n }\r\n\r\n // 2. 业务流量\r\n // 2.1.1 Top 10 App流量概况\r\n var appCompanyTrafficTop10 = [\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.2 前一周期Top 10 App Company Traffic\r\n var appCompanyTrafficTop10Pre1st = [\r\n <#if appCompanyTrafficTop10Pre1st??>\r\n <#list appCompanyTrafficTop10Pre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3 前两周期Top 10 App Company Traffic\r\n var appCompanyTrafficTop10Pre2nd = [\r\n <#if appCompanyTrafficTop10Pre2nd??>\r\n <#list appCompanyTrafficTop10Pre2nd as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4. 地理位置分布\r\n //4.1 IDC对外(省Z-A)服务能力Top10省份请求流量分布\r\n\r\n // 4.1.1 Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10In2Out = [\r\n <#if provinceSentTrafficSummaryTop10In2Out??>\r\n <#list provinceSentTrafficSummaryTop10In2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.2 前一周期Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10In2OutPre1st= [\r\n <#if provinceSentTrafficSummaryTop10In2OutPre1st??>\r\n <#list provinceSentTrafficSummaryTop10In2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1.3 前两周期Top10省份请求流量\r\n var provinceSentTrafficSummaryTop10In2OutPre2nd = [\r\n <#if provinceSentTrafficSummaryTop10In2OutPre2nd??>\r\n <#list provinceSentTrafficSummaryTop10In2OutPre2nd as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 IDC对外(省Z-A)服务能力Top10省份响应流量分布\r\n // 4.2.1 Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10In2Out = [\r\n <#if provinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list provinceReceivedTrafficSummaryTop10In2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n // 4.2.2 前一周期Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10In2OutPre1st= [\r\n <#if provinceReceivedTrafficSummaryTop10In2OutPre1st??>\r\n <#list provinceReceivedTrafficSummaryTop10In2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2.3 前两周期Top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10In2OutPre2nd = [\r\n <#if provinceReceivedTrafficSummaryTop10In2OutPre2nd??>\r\n <#list provinceReceivedTrafficSummaryTop10In2OutPre2nd as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3 IDC对外(省Z-A)提供服务TOP3省份的APP的流量占比\r\n // 4.3.1 Top3省份\r\n var provinceTrafficSummaryTop3In2Out = [\r\n <#if provinceTrafficSummaryTop3In2Out??>\r\n <#list provinceTrafficSummaryTop3In2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.2 前一周期Top3省份\r\n var provinceTrafficSummaryTop3In2OutPre1st = [\r\n <#if provinceTrafficSummaryTop3In2OutPre1st??>\r\n <#list provinceTrafficSummaryTop3In2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.3 前两周期Top3省份\r\n var provinceTrafficSummaryTop3In2OutPre2st = [\r\n <#if provinceTrafficSummaryTop3In2OutPre2st??>\r\n <#list provinceTrafficSummaryTop3In2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.4 1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyIn2Out = [\r\n <#if firstProvinceTrafficTop5AppCompanyIn2Out??>\r\n <#list firstProvinceTrafficTop5AppCompanyIn2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.5 前一周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if firstProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list firstProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.6 前两周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyZAPre2st = [\r\n <#if firstProvinceTrafficTop5AppCompanyZAPre2st??>\r\n <#list firstProvinceTrafficTop5AppCompanyZAPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.7 2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCIn2Outomapnty = [\r\n <#if secondProvinceTrafficTop5AppCIn2Outomapnty??>\r\n <#list secondProvinceTrafficTop5AppCIn2Outomapnty as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.8 前一周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if secondProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list secondProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.9 前两周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyIn2OutPre2st = [\r\n <#if secondProvinceTrafficTop5AppCompanyIn2OutPre2st??>\r\n <#list secondProvinceTrafficTop5AppCompanyIn2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.10 3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyIn2Out = [\r\n <#if thirdProvinceTrafficTop5AppCompanyIn2Out??>\r\n <#list thirdProvinceTrafficTop5AppCompanyIn2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.11 前一周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if thirdProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list thirdProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.3.12 前两周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyIn2OutPre2st = [\r\n <#if thirdProvinceTrafficTop5AppCompanyIn2OutPre2st??>\r\n <#list thirdProvinceTrafficTop5AppCompanyIn2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4 IDC对外(省Z-A)提供服务TOP3 APP的省份流量占比\r\n // 4.4.1 Top3 App\r\n var appTrafficSummaryTop3In2Out = [\r\n <#if appTrafficSummaryTop3In2Out??>\r\n <#list appTrafficSummaryTop3In2Out as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/ 1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n // 4.4.2 前一周期Top3 App\r\n var appTrafficSummaryTop3In2OutPre1st = [\r\n <#if appTrafficSummaryTop3In2OutPre1st??>\r\n <#list appTrafficSummaryTop3In2OutPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/ 1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.3 前两周期Top3 App\r\n var appTrafficSummaryTop3In2OutPre2st = [\r\n <#if appTrafficSummaryTop3In2OutPre2st??>\r\n <#list appTrafficSummaryTop3In2OutPre2st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/ 1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.4 1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceIn2Out = [\r\n <#if firstAppTrafficTop5ProvinceIn2Out??>\r\n <#list firstAppTrafficTop5ProvinceIn2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n // 4.4.5 前一周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceIn2OutPre1st = [\r\n <#if firstAppTrafficTop5ProvinceIn2OutPre1st??>\r\n <#list firstAppTrafficTop5ProvinceIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.6 前两周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceIn2OutPre2st = [\r\n <#if firstAppTrafficTop5ProvinceIn2OutPre2st??>\r\n <#list firstAppTrafficTop5ProvinceIn2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.7 2nd App Top5 Province\r\n var secondeAppTrafficTop5ProvinceIn2Out = [\r\n <#if secondeAppTrafficTop5ProvinceIn2Out??>\r\n <#list secondeAppTrafficTop5ProvinceIn2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.8 前一周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceIn2OutPre1st = [\r\n <#if secondAppTrafficTop5ProvinceIn2OutPre1st??>\r\n <#list secondAppTrafficTop5ProvinceIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.9 前两周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceIn2OutPre2st = [\r\n <#if secondAppTrafficTop5ProvinceIn2OutPre2st??>\r\n <#list secondAppTrafficTop5ProvinceIn2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.10 3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceIn2Out = [\r\n <#if thirdAppTrafficTop5ProvinceIn2Out??>\r\n <#list thirdAppTrafficTop5ProvinceIn2Out as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n\r\n // 4.4.11 前一周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceIn2OutPre1st = [\r\n <#if thirdAppTrafficTop5ProvinceIn2OutPre1st??>\r\n <#list thirdAppTrafficTop5ProvinceIn2OutPre1st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.4.12 前两周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceIn2OutPre2st = [\r\n <#if thirdAppTrafficTop5ProvinceIn2OutPre2st??>\r\n <#list thirdAppTrafficTop5ProvinceIn2OutPre2st as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5 IDC内容获取(省A-Z)服务能力的Top10省份请求流量分布\r\n // 4.5.1 top10省份请求流量\r\n var provinceSentTrafficSummaryTop10Out2In = [\r\n <#if provinceSentTrafficSummaryTop10Out2In??>\r\n <#list provinceSentTrafficSummaryTop10Out2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5.2 前一周期top10省份请求流量\r\n var provinceSentTrafficSummaryTop10Out2InPre1st= [\r\n <#if provinceSentTrafficSummaryTop10Out2InPre1st??>\r\n <#list provinceSentTrafficSummaryTop10Out2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.5.3 前两周期top10省份请求流量\r\n var provinceSentTrafficSummaryTop10Out2InPre2nd = [\r\n <#if provinceSentTrafficSummaryTop10Out2InPre2nd??>\r\n <#list provinceSentTrafficSummaryTop10Out2InPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6 IDC内容获取(省A-Z)服务能力的Top10省份响应流量分布\r\n // 4.6.1 top10省份响应流量\r\n var provinceReceivedTrafficSummaryTop10Out2In = [\r\n <#if provinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6.2 前一周期top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10Out2InPre1st= [\r\n <#if provinceReceivedTrafficSummaryTop10Out2InPre1st??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.6.3 前两周期top10省份请求流量\r\n var provinceReceivedTrafficSummaryTop10Out2InPre2nd = [\r\n <#if provinceReceivedTrafficSummaryTop10Out2InPre2nd??>\r\n <#list provinceReceivedTrafficSummaryTop10Out2InPre2nd as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7 IDC对内(地市Z- A)服务能力的Top10省内地区请求流量分布\r\n // 4.7.1 top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10In2Out = [\r\n <#if inProvinceSentTrafficSummaryTop10In2Out??>\r\n <#list inProvinceSentTrafficSummaryTop10In2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7.2 前一周期top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10In2OutPre1st = [\r\n <#if inProvinceSentTrafficSummaryTop10In2OutPre1st??>\r\n <#list inProvinceSentTrafficSummaryTop10In2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.7.3 前两周期top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10In2OutPre2nd = [\r\n <#if inProvinceSentTrafficSummaryTop10In2OutPre2nd??>\r\n <#list inProvinceSentTrafficSummaryTop10In2OutPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8 IDC对内(地市Z-A)服务能力的Top10省份响应流量分布\r\n // 4.8.1 top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10In2Out = [\r\n <#if inProvinceReceivedTrafficSummaryTop10In2Out??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8.2 前一周期top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10In2OutPre1st = [\r\n <#if inProvinceReceivedTrafficSummaryTop10In2OutPre1st??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.8.3 前两周期top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10In2OutPre2nd = [\r\n <#if inProvinceReceivedTrafficSummaryTop10In2OutPre2nd??>\r\n <#list inProvinceReceivedTrafficSummaryTop10In2OutPre2nd as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n // 4.9.1 IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3In2Out = [\r\n <#if inProvinceTrafficSummaryTop3In2Out??>\r\n <#list inProvinceTrafficSummaryTop3In2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.2 前一周期IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3In2OutPre1st = [\r\n <#if inProvinceTrafficSummaryTop3In2OutPre1st??>\r\n <#list inProvinceTrafficSummaryTop3In2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.3 前两周期IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3In2OutPre2st = [\r\n <#if inProvinceTrafficSummaryTop3In2OutPre2st??>\r\n <#list inProvinceTrafficSummaryTop3In2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.4 1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyIn2Out = [\r\n <#if firstInProvinceTrafficTop5AppCompanyIn2Out??>\r\n <#list firstInProvinceTrafficTop5AppCompanyIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n // 4.9.5 前一周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if firstInProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list firstInProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.6 前两周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyIn2OutPre2st = [\r\n <#if firstInProvinceTrafficTop5AppCompanyIn2OutPre2st??>\r\n <#list firstInProvinceTrafficTop5AppCompanyIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.7 2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyIn2Out = [\r\n <#if secondInProvinceTrafficTop5AppCompanyIn2Out??>\r\n <#list secondInProvinceTrafficTop5AppCompanyIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.8 前一周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if secondInProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list secondInProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.9 前两周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyIn2OutPre2st = [\r\n <#if secondInProvinceTrafficTop5AppCompanyIn2OutPre2st??>\r\n <#list secondInProvinceTrafficTop5AppCompanyIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.10 3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyIn2Out = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyIn2Out??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.11 前一周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyIn2OutPre1st = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyIn2OutPre1st??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.9.12 前两周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyIn2OutPre2st = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyIn2OutPre2st??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n // 4.10.1 IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppIn2Out = [\r\n <#if inProvinceTrafficSummaryTop3AppIn2Out??>\r\n <#list inProvinceTrafficSummaryTop3AppIn2Out as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.2 前一周期IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppIn2OutPre1st = [\r\n <#if inProvinceTrafficSummaryTop3AppIn2OutPre1st??>\r\n <#list inProvinceTrafficSummaryTop3AppIn2OutPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.3 前两周期IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppIn2OutPre2st = [\r\n <#if inProvinceTrafficSummaryTop3AppIn2OutPre2st??>\r\n <#list inProvinceTrafficSummaryTop3AppIn2OutPre2st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.4 1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionIn2Out = [\r\n <#if firstInProvinceTrafficTop5RegionIn2Out??>\r\n <#list firstInProvinceTrafficTop5RegionIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.5 前一周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionIn2OutPre1st = [\r\n <#if firstInProvinceTrafficTop5RegionIn2OutPre1st??>\r\n <#list firstInProvinceTrafficTop5RegionIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.6 前两周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionIn2OutPre2st = [\r\n <#if firstInProvinceTrafficTop5RegionIn2OutPre2st??>\r\n <#list firstInProvinceTrafficTop5RegionIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.7 2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionIn2Out = [\r\n <#if secondInProvinceTrafficTop5RegionIn2Out??>\r\n <#list secondInProvinceTrafficTop5RegionIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.8 前一周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionIn2OutPre1st = [\r\n <#if secondInProvinceTrafficTop5RegionIn2OutPre1st??>\r\n <#list secondInProvinceTrafficTop5RegionIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.9 前两周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionIn2OutPre2st = [\r\n <#if secondInProvinceTrafficTop5RegionIn2OutPre2st??>\r\n <#list secondInProvinceTrafficTop5RegionIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.10 3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionIn2Out = [\r\n <#if thirdInProvinceTrafficTop5RegionIn2Out??>\r\n <#list thirdInProvinceTrafficTop5RegionIn2Out as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.11 前一周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionIn2OutPre1st = [\r\n <#if thirdInProvinceTrafficTop5RegionIn2OutPre1st??>\r\n <#list thirdInProvinceTrafficTop5RegionIn2OutPre1st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.10.12 前两周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionIn2OutPre2st = [\r\n <#if thirdInProvinceTrafficTop5RegionIn2OutPre2st??>\r\n <#list thirdInProvinceTrafficTop5RegionIn2OutPre2st as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.11 IDC内容获取(地市A-Z)服务能力的Top10省内地区请求流量分布\r\n // 4.11.1 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10Out2In = [\r\n <#if inProvinceSentTrafficSummaryTop10Out2In??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.11.2 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10Out2InPre1st = [\r\n <#if inProvinceSentTrafficSummaryTop10Out2InPre1st??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.11.3 Top10省内地区请求流量\r\n var inProvinceSentTrafficSummaryTop10Out2InPre2nd = [\r\n <#if inProvinceSentTrafficSummaryTop10Out2InPre2nd??>\r\n <#list inProvinceSentTrafficSummaryTop10Out2InPre2nd as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},bytes_sent_rate_avg:${jsGetNumFromObj(d,\'bytes_sent_rate_avg\')/1000},bytes_sent_rate_max:${jsGetNumFromObj(d,\'bytes_sent_rate_max\')/1000},bytes_sent_rate_min:${jsGetNumFromObj(d,\'bytes_sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12 IDC内容获取(地市A-Z)服务能力的Top10省内地区响应流量分布\r\n // 4.12.1 Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10Out2In = [\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2In??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12.2 前一周期Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10Out2InPre1st = [\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2InPre1st??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.12.3 前两周期Top10省内地区响应流量\r\n var inProvinceReceivedTrafficSummaryTop10Out2InPre2nd = [\r\n <#if inProvinceReceivedTrafficSummaryTop10Out2InPre2nd??>\r\n <#list inProvinceReceivedTrafficSummaryTop10Out2InPre2nd as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},bytes_received_rate_avg:${jsGetNumFromObj(d,\'bytes_received_rate_avg\')/1000},bytes_received_rate_max:${jsGetNumFromObj(d,\'bytes_received_rate_max\')/1000},bytes_received_rate_min:${jsGetNumFromObj(d,\'bytes_received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13 省外访问省内的TOP3省份的APP流量占比\r\n // 4.13.1 Top3省份\r\n var provinceTrafficSummaryTop3Out2In = [\r\n <#if provinceTrafficSummaryTop3Out2In??>\r\n <#list provinceTrafficSummaryTop3Out2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.2 前一周期Top3省份\r\n var provinceTrafficSummaryTop3Out2InPre1st = [\r\n <#if provinceTrafficSummaryTop3Out2InPre1st??>\r\n <#list provinceTrafficSummaryTop3Out2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.3 前两周期Top3省份\r\n var provinceTrafficSummaryTop3Out2InPre2st = [\r\n <#if provinceTrafficSummaryTop3Out2InPre2st??>\r\n <#list provinceTrafficSummaryTop3Out2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.4 1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if firstProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list firstProvinceTrafficTop5AppCompanyOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.5 前一周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if firstProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list firstProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.6 前两周期1st省份Top5 App Company\r\n var firstProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if firstProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list firstProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.7 2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if secondProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list secondProvinceTrafficTop5AppCompanyOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.8 前一周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if secondProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list secondProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.9 前两周期2nd省份Top5 App Company\r\n var secondProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if secondProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list secondProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.10 3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if thirdProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list thirdProvinceTrafficTop5AppCompanyOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.11 前一周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if thirdProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list thirdProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.13.12 前两周期3rd省份Top5 App Company\r\n var thirdProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if thirdProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list thirdProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14 省外访问省内的TOP3APP的省份流量占比\r\n // 4.14.1 Top3 App\r\n var appTrafficSummaryTop3Out2In = [\r\n <#if appTrafficSummaryTop3Out2In??>\r\n <#list appTrafficSummaryTop3Out2In as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.2 前一周期Top3 App\r\n var appTrafficSummaryTop3Out2InPre1st = [\r\n <#if appTrafficSummaryTop3Out2InPre1st??>\r\n <#list appTrafficSummaryTop3Out2InPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.3 前两周期Top3 App\r\n var appTrafficSummaryTop3Out2InPre2st = [\r\n <#if appTrafficSummaryTop3Out2InPre2st??>\r\n <#list appTrafficSummaryTop3Out2InPre2st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.4 1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceOut2In = [\r\n <#if firstAppTrafficTop5ProvinceOut2In??>\r\n <#list firstAppTrafficTop5ProvinceOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.5 前一周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceOut2InPre1st = [\r\n <#if firstAppTrafficTop5ProvinceOut2InPre1st??>\r\n <#list firstAppTrafficTop5ProvinceOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.6 前两周期1st App Top5 Province\r\n var firstAppTrafficTop5ProvinceOut2InPre2st = [\r\n <#if firstAppTrafficTop5ProvinceOut2InPre2st??>\r\n <#list firstAppTrafficTop5ProvinceOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.7 2nd App Top5 Province\r\n var secondeAppTrafficTop5ProvinceOut2In = [\r\n <#if secondeAppTrafficTop5ProvinceOut2In??>\r\n <#list secondeAppTrafficTop5ProvinceOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.8 前一周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceOut2InPre1st = [\r\n <#if secondAppTrafficTop5ProvinceOut2InPre1st??>\r\n <#list secondAppTrafficTop5ProvinceOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.9 前两周期2nd App Top5 Province\r\n var secondAppTrafficTop5ProvinceOut2InPre2st = [\r\n <#if secondAppTrafficTop5ProvinceOut2InPre2st??>\r\n <#list secondAppTrafficTop5ProvinceOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.10 3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceOut2In = [\r\n <#if thirdAppTrafficTop5ProvinceOut2In??>\r\n <#list thirdAppTrafficTop5ProvinceOut2In as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.11 前一周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceOut2InPre1st = [\r\n <#if thirdAppTrafficTop5ProvinceOut2InPre1st??>\r\n <#list thirdAppTrafficTop5ProvinceOut2InPre1st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.14.12 前两周期3rd App Top5 Province\r\n var thirdAppTrafficTop5ProvinceOut2InPre2st = [\r\n <#if thirdAppTrafficTop5ProvinceOut2InPre2st??>\r\n <#list thirdAppTrafficTop5ProvinceOut2InPre2st as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15 省外访问省内的TOP3省内地区的APP流量占比\r\n // 4.15.1 IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3Out2In = [\r\n <#if inProvinceTrafficSummaryTop3Out2In??>\r\n <#list inProvinceTrafficSummaryTop3Out2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.2 前一周期IDC对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3Out2InPre1st = [\r\n <#if inProvinceTrafficSummaryTop3Out2InPre1st??>\r\n <#list inProvinceTrafficSummaryTop3Out2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.3 前两周期省外访问省内对内服务能力Top3省内地区\r\n var inProvinceTrafficSummaryTop3Out2InPre2st = [\r\n <#if inProvinceTrafficSummaryTop3Out2InPre2st??>\r\n <#list inProvinceTrafficSummaryTop3Out2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.4 1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if firstInProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list firstInProvinceTrafficTop5AppCompanyOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.5 前一周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if firstInProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list firstInProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.6 前两周期1st省内地区Top5 App Company\r\n var firstInProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if firstInProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list firstInProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.7 2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if secondInProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list secondInProvinceTrafficTop5AppCompanyOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.8 前一周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if secondInProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list secondInProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.9 前两周期2nd省内地区Top5 App Company\r\n var secondInProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if secondInProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list secondInProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.10 3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyOut2In = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyOut2In??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.11 前一周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyOut2InPre1st = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyOut2InPre1st??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.15.12 前两周期3rd省内地区Top5 App Company\r\n var thirdInProvinceTrafficTop5AppCompanyOut2InPre2st = [\r\n <#if thirdInProvinceTrafficTop5AppCompanyOut2InPre2st??>\r\n <#list thirdInProvinceTrafficTop5AppCompanyOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16 省外访问省内的TOP3APP的省内地区流量占比\r\n // 4.16.1 IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppOut2In = [\r\n <#if inProvinceTrafficSummaryTop3AppOut2In??>\r\n <#list inProvinceTrafficSummaryTop3AppOut2In as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.2 前一周期IDC对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppOut2InPre1st = [\r\n <#if inProvinceTrafficSummaryTop3AppOut2InPre1st??>\r\n <#list inProvinceTrafficSummaryTop3AppOut2InPre1st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.3 前两周期省外访问省内对内服务能力Top3APP\r\n var inProvinceTrafficSummaryTop3AppOut2InPre2st = [\r\n <#if inProvinceTrafficSummaryTop3AppOut2InPre2st??>\r\n <#list inProvinceTrafficSummaryTop3AppOut2InPre2st as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.4 1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionOut2In = [\r\n <#if firstInProvinceTrafficTop5RegionOut2In??>\r\n <#list firstInProvinceTrafficTop5RegionOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.5 前一周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionOut2InPre1st = [\r\n <#if firstInProvinceTrafficTop5RegionOut2InPre1st??>\r\n <#list firstInProvinceTrafficTop5RegionOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.6 前两周期1st App Top5省内地区\r\n var firstInProvinceTrafficTop5RegionOut2InPre2st = [\r\n <#if firstInProvinceTrafficTop5RegionOut2InPre2st??>\r\n <#list firstInProvinceTrafficTop5RegionOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.7 2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionOut2In = [\r\n <#if secondInProvinceTrafficTop5RegionOut2In??>\r\n <#list secondInProvinceTrafficTop5RegionOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.8 前一周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionOut2InPre1st = [\r\n <#if secondInProvinceTrafficTop5RegionOut2InPre1st??>\r\n <#list secondInProvinceTrafficTop5RegionOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.9 前两周期2nd App Top5省内地区\r\n var secondInProvinceTrafficTop5RegionOut2InPre2st = [\r\n <#if secondInProvinceTrafficTop5RegionOut2InPre2st??>\r\n <#list secondInProvinceTrafficTop5RegionOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.10 3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionOut2In = [\r\n <#if thirdInProvinceTrafficTop5RegionOut2In??>\r\n <#list thirdInProvinceTrafficTop5RegionOut2In as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.11 前一周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionOut2InPre1st = [\r\n <#if thirdInProvinceTrafficTop5RegionOut2InPre1st??>\r\n <#list thirdInProvinceTrafficTop5RegionOut2InPre1st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.16.12 前两周期3rd App Top5省内地区\r\n var thirdInProvinceTrafficTop5RegionOut2InPre2st = [\r\n <#if thirdInProvinceTrafficTop5RegionOut2InPre2st??>\r\n <#list thirdInProvinceTrafficTop5RegionOut2InPre2st as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024},rate50:${jsGetNumFromObj(d,\'rate50\')/1000},rate90:${jsGetNumFromObj(d,\'rate90\')/1000},rate99:${jsGetNumFromObj(d,\'rate99\')/1000},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1 绘画流量流向图\r\n // 1.1 省内访问省外\r\n // 1.1.1 会话流量流向图\r\n var linkDirectionTrafficIn2Out = [\r\n <#if linkDirectionTrafficIn2Out??>\r\n <#list linkDirectionTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 省外访问省内\r\n // 1.2.1 会话流量流向图\r\n var linkDirectionTrafficOut2In = [\r\n <#if linkDirectionTrafficOut2In??>\r\n <#list linkDirectionTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2 各链路Top5指标流量占比\r\n // 2.1.1 上行链路总流量统计\r\n // 2.1.1.1 各链路上行总流量-本周期\r\n var linkEgressTrafficIn2Out = [\r\n <#if linkEgressTrafficIn2Out??>\r\n <#list linkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.1.2 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficIn2Out = [\r\n <#if pre1stLinkEgressTrafficIn2Out??>\r\n <#list pre1stLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.1.3 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficIn2Out = [\r\n <#if pre2ndLinkEgressTrafficIn2Out??>\r\n <#list pre2ndLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.2 下行链路总流量统计\r\n // 2.1.2.1 各链路下行总流量-本周期\r\n var linkIngressTrafficIn2Out = [\r\n <#if linkIngressTrafficIn2Out??>\r\n <#list linkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.2.2 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficIn2Out = [\r\n <#if pre1stLinkIngressTrafficIn2Out??>\r\n <#list pre1stLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.2.3 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficIn2Out = [\r\n <#if pre2ndLinkIngressTrafficIn2Out??>\r\n <#list pre2ndLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3 西宁链路TopN APP统计\r\n // 2.1.3.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppIn2OutXN = [\r\n <#if linkEgressTrafficTopNAppIn2OutXN??>\r\n <#list linkEgressTrafficTopNAppIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppIn2OutXN = [\r\n <#if pre1stLinkEgressTrafficTopNAppIn2OutXN??>\r\n <#list pre1stLinkEgressTrafficTopNAppIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppIn2OutXN = [\r\n <#if pre2ndLinkEgressTrafficTopNAppIn2OutXN??>\r\n <#list pre2ndLinkEgressTrafficTopNAppIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppIn2OutXN = [\r\n <#if linkIngressTrafficTopNAppIn2OutXN??>\r\n <#list linkIngressTrafficTopNAppIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppIn2OutXN = [\r\n <#if pre1stLinkIngressTrafficTopNAppIn2OutXN??>\r\n <#list pre1stLinkIngressTrafficTopNAppIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.3.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppIn2OutXN = [\r\n <#if pre2ndLinkIngressTrafficTopNAppIn2OutXN??>\r\n <#list pre2ndLinkIngressTrafficTopNAppIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4 西宁链路TopN 省份统计\r\n // 2.1.4.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.4.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5 太原链路TopN APP统计\r\n // 2.1.5.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppIn2OutTY = [\r\n <#if linkEgressTrafficTopNAppIn2OutTY??>\r\n <#list linkEgressTrafficTopNAppIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppIn2OutTY = [\r\n <#if pre1stLinkEgressTrafficTopNAppIn2OutTY??>\r\n <#list pre1stLinkEgressTrafficTopNAppIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppIn2OutTY = [\r\n <#if pre2ndLinkEgressTrafficTopNAppIn2OutTY??>\r\n <#list pre2ndLinkEgressTrafficTopNAppIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppIn2OutTY = [\r\n <#if linkIngressTrafficTopNAppIn2OutTY??>\r\n <#list linkIngressTrafficTopNAppIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppIn2OutTY = [\r\n <#if pre1stLinkIngressTrafficTopNAppIn2OutTY??>\r\n <#list pre1stLinkIngressTrafficTopNAppIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.5.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppIn2OutTY = [\r\n <#if pre2ndLinkIngressTrafficTopNAppIn2OutTY??>\r\n <#list pre2ndLinkIngressTrafficTopNAppIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6 太原链路TopN 省份统计\r\n // 2.1.6.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7 西安链路TopN APP统计\r\n // 2.1.7.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppIn2OutXA = [\r\n <#if linkEgressTrafficTopNAppIn2OutXA??>\r\n <#list linkEgressTrafficTopNAppIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppIn2OutXA = [\r\n <#if pre1stLinkEgressTrafficTopNAppIn2OutXA??>\r\n <#list pre1stLinkEgressTrafficTopNAppIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppIn2OutXA = [\r\n <#if pre2ndLinkEgressTrafficTopNAppIn2OutXA??>\r\n <#list pre2ndLinkEgressTrafficTopNAppIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppIn2OutXA = [\r\n <#if linkIngressTrafficTopNAppIn2OutXA??>\r\n <#list linkIngressTrafficTopNAppIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppIn2OutXA = [\r\n <#if pre1stLinkIngressTrafficTopNAppIn2OutXA??>\r\n <#list pre1stLinkIngressTrafficTopNAppIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.7.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppIn2OutXA = [\r\n <#if pre2ndLinkIngressTrafficTopNAppIn2OutXA??>\r\n <#list pre2ndLinkIngressTrafficTopNAppIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8 西安链路TopN 省份统计\r\n // 2.1.8.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.8.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2 省外访问省内\r\n // 2.2.1 上行链路总流量统计\r\n // 2.2.1.1 各链路上行总流量-本周期\r\n var linkEgressTrafficOut2In = [\r\n <#if linkEgressTrafficOut2In??>\r\n <#list linkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.1.2 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficOut2In = [\r\n <#if pre1stLinkEgressTrafficOut2In??>\r\n <#list pre1stLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.1.3 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficOut2In = [\r\n <#if pre2ndLinkEgressTrafficOut2In??>\r\n <#list pre2ndLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.2 下行链路总流量统计\r\n // 2.2.2.1 各链路下行总流量-本周期\r\n var linkIngressTrafficOut2In = [\r\n <#if linkIngressTrafficOut2In??>\r\n <#list linkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.2.2 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficOut2In = [\r\n <#if pre1stLinkIngressTrafficOut2In??>\r\n <#list pre1stLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.2.3 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficOut2In = [\r\n <#if pre2ndLinkIngressTrafficOut2In??>\r\n <#list pre2ndLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3 西宁链路TopN APP统计\r\n // 2.2.3.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppOut2InXN = [\r\n <#if linkEgressTrafficTopNAppOut2InXN??>\r\n <#list linkEgressTrafficTopNAppOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppOut2InXN = [\r\n <#if pre1stLinkEgressTrafficTopNAppOut2InXN??>\r\n <#list pre1stLinkEgressTrafficTopNAppOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppOut2InXN = [\r\n <#if pre2ndLinkEgressTrafficTopNAppOut2InXN??>\r\n <#list pre2ndLinkEgressTrafficTopNAppOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppOut2InXN = [\r\n <#if linkIngressTrafficTopNAppOut2InXN??>\r\n <#list linkIngressTrafficTopNAppOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppOut2InXN = [\r\n <#if pre1stLinkIngressTrafficTopNAppOut2InXN??>\r\n <#list pre1stLinkIngressTrafficTopNAppOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.3.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppOut2InXN = [\r\n <#if pre2ndLinkIngressTrafficTopNAppOut2InXN??>\r\n <#list pre2ndLinkIngressTrafficTopNAppOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4 西宁链路TopN 省份统计\r\n // 2.2.4.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.4.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5 太原链路TopN APP统计\r\n // 2.2.5.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppOut2InTY = [\r\n <#if linkEgressTrafficTopNAppOut2InTY??>\r\n <#list linkEgressTrafficTopNAppOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppOut2InTY = [\r\n <#if pre1stLinkEgressTrafficTopNAppOut2InTY??>\r\n <#list pre1stLinkEgressTrafficTopNAppOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppOut2InTY = [\r\n <#if pre2ndLinkEgressTrafficTopNAppOut2InTY??>\r\n <#list pre2ndLinkEgressTrafficTopNAppOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppOut2InTY = [\r\n <#if linkIngressTrafficTopNAppOut2InTY??>\r\n <#list linkIngressTrafficTopNAppOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppOut2InTY = [\r\n <#if pre1stLinkIngressTrafficTopNAppOut2InTY??>\r\n <#list pre1stLinkIngressTrafficTopNAppOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.5.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppOut2InTY = [\r\n <#if pre2ndLinkIngressTrafficTopNAppOut2InTY??>\r\n <#list pre2ndLinkIngressTrafficTopNAppOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6 太原链路TopN 省份统计\r\n // 2.2.6.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if linkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list linkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if linkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list linkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.6.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7 西安链路TopN APP统计\r\n // 2.2.7.1 上行链路TopN APP-本周期\r\n var linkEgressTrafficTopNAppOut2InXA = [\r\n <#if linkEgressTrafficTopNAppOut2InXA??>\r\n <#list linkEgressTrafficTopNAppOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7.2 上行链路TopN APP-上周期\r\n var pre1stLinkEgressTrafficTopNAppOut2InXA = [\r\n <#if pre1stLinkEgressTrafficTopNAppOut2InXA??>\r\n <#list pre1stLinkEgressTrafficTopNAppOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7.3 上行链路TopN APP-上上周期\r\n var pre2ndLinkEgressTrafficTopNAppOut2InXA = [\r\n <#if pre2ndLinkEgressTrafficTopNAppOut2InXA??>\r\n <#list pre2ndLinkEgressTrafficTopNAppOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7.4 下行链路TopN APP-本周期\r\n var linkIngressTrafficTopNAppOut2InXA = [\r\n <#if linkIngressTrafficTopNAppOut2InXA??>\r\n <#list linkIngressTrafficTopNAppOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7.5 下行链路TopN APP-上周期\r\n var pre1stLinkIngressTrafficTopNAppOut2InXA = [\r\n <#if pre1stLinkIngressTrafficTopNAppOut2InXA??>\r\n <#list pre1stLinkIngressTrafficTopNAppOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.7.6 下行链路TopN APP-上上周期\r\n var pre2ndLinkIngressTrafficTopNAppOut2InXA = [\r\n <#if pre2ndLinkIngressTrafficTopNAppOut2InXA??>\r\n <#list pre2ndLinkIngressTrafficTopNAppOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8 西安链路TopN 省份统计\r\n // 2.2.8.1 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8.2 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8.3 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8.4 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8.5 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.2.8.6 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /** 数据 end */\r\n\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n trafficRateTrend = trafficRateTrend.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange1\',\r\n \'currentRange2\',\r\n \'currentRange3\',\r\n \'currentRange4\',\r\n \'currentRange9\',\r\n \'currentRange10\',\r\n \'currentRange17\',\r\n \'currentRange18\',\r\n \'currentRange19\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange0\',\r\n \'statisticsRange1\',\r\n \'statisticsRange2\',\r\n \'statisticsRange3\',\r\n \'statisticsRange4\',\r\n \'statisticsRange5\',\r\n \'statisticsRange6\',\r\n \'statisticsRange7\',\r\n \'statisticsRange8\',\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange0\',\r\n \'prevRange1\',\r\n \'prevRange2\',\r\n \'prevRange3\',\r\n \'prevRange4\',\r\n \'prevRange9\',\r\n \'prevRange10\',\r\n \'prevRange17\',\r\n \'prevRange18\',\r\n \'prevRange19\',\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n\r\n // 1.2 流量变化曲线\r\n function initEcharts1() {\r\n var seriesData1 = trafficRateTrend.map(d => [d.stat_time, d.rate] )\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (quantile1.rate99 > quantile1.rate90 && quantile1.rate90 > quantile1.rate50 && (quantile1.rate90 && quantile1.rate50 && quantile1.rate99) !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: quantile1.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: quantile1.rate50,\r\n lte: quantile1.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: quantile1.rate90,\r\n lte: quantile1.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: quantile1.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: quantile1.rate50\r\n },\r\n {\r\n yAxis: quantile1.rate90\r\n },\r\n {\r\n yAxis: quantile1.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n\r\n // 2.1 Top 10 App流量概况\r\n function initEcharts2 () {\r\n var categoryData2 = appCompanyTrafficTop10.map(t => checkXAxisIsEmpty(t.app_company))\r\n var barSeriesData2 = appCompanyTrafficTop10.map(t => {\r\n if (!t.bytes) {\r\n t.bytes = 0\r\n }\r\n return {\r\n value: t.bytes,\r\n percent: trafficSummary.bytes === 0 ? 0 : parseFloat(t.bytes) / trafficSummary.bytes\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n appCompanyTrafficTop10.forEach(t => {\r\n var findData = appCompanyTrafficTop10Pre1st.find(pt => pt.app_company === t.app_company)\r\n if (findData && findData.bytes) {\r\n lineSeriesData1_2.push(findData.bytes === 0 ? 0 : parseFloat(((t.bytes - findData.bytes) / parseFloat(findData.bytes) * 100).toFixed(2)))\r\n var findData2 = appCompanyTrafficTop10Pre2nd.find(ppt => findData.app_company === ppt.app_company)\r\n if (findData2 && findData2.bytes) {\r\n lineSeriesData2_2.push(findData2.bytes === 0 ? 0 : parseFloat(((findData.bytes - findData2.bytes) / parseFloat(findData2.bytes) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].name = \'流量\'\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.1 IDC对外(省Z-A)服务能力Top10省份请求流量分布\r\n function initEcharts3 () {\r\n var categoryData3 = provinceSentTrafficSummaryTop10In2Out.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData3 = provinceSentTrafficSummaryTop10In2Out.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryIn2Out.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryIn2Out.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceSentTrafficSummaryTop10In2Out.forEach(t => {\r\n var findData = provinceSentTrafficSummaryTop10In2OutPre1st.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = provinceSentTrafficSummaryTop10In2OutPre2nd.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_3.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 3\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.2 IDC对外(省Z-A)服务能力Top10省份响应流量分布\r\n function initEcharts4 () {\r\n var categoryData4 = provinceReceivedTrafficSummaryTop10In2Out.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData4 = provinceReceivedTrafficSummaryTop10In2Out.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryOut2In.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryIn2Out.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n provinceReceivedTrafficSummaryTop10In2Out.forEach(t => {\r\n var findData = provinceReceivedTrafficSummaryTop10In2OutPre1st.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_4.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = provinceReceivedTrafficSummaryTop10In2OutPre2nd.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_4.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.5 IDC内容获取(省A-Z)服务能力的Top10省份请求流量分布\r\n function initEcharts5 () {\r\n var categoryData5 = provinceSentTrafficSummaryTop10Out2In.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData5 = provinceSentTrafficSummaryTop10Out2In.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryOut2In.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryOut2In.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n provinceSentTrafficSummaryTop10Out2In.forEach(t => {\r\n var findData = provinceSentTrafficSummaryTop10Out2InPre1st.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = provinceSentTrafficSummaryTop10Out2InPre2nd.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.6 IDC内容获取(省A-Z)服务能力的Top10省份响应流量分布\r\n function initEcharts6 () {\r\n var categoryData6 = provinceReceivedTrafficSummaryTop10Out2In.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData6 = provinceReceivedTrafficSummaryTop10Out2In.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryOut2In.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryOut2In.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_6 = []\r\n // 第二条线\r\n var lineSeriesData2_6 = []\r\n provinceReceivedTrafficSummaryTop10Out2In.forEach(t => {\r\n var findData = provinceReceivedTrafficSummaryTop10Out2InPre1st.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_6.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = provinceReceivedTrafficSummaryTop10Out2InPre2nd.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_6.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_6.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_6.push(0)\r\n lineSeriesData2_6.push(0)\r\n }\r\n })\r\n var copyLineSeriesData6 = [...lineSeriesData1_6, ...lineSeriesData2_6]\r\n var copyBarSeriesData6 = [...barSeriesData6]\r\n copyLineSeriesData6.sort((a, b) => a - b)\r\n copyBarSeriesData6.sort((a, b) => a.value - b.value)\r\n var barMax6 = copyBarSeriesData6.length > 0 ? copyBarSeriesData6[copyBarSeriesData6.length - 1].value : 50\r\n var lineMin6 = copyLineSeriesData6[0] ? copyLineSeriesData6[0] : 0\r\n var lineMax6 = copyLineSeriesData6.length > 0 ? copyLineSeriesData6[copyLineSeriesData6.length - 1] : 0\r\n if (lineMin6 == 0 && lineMin6 == lineMax6) {\r\n lineMin6 = -5\r\n lineMax6 = 1\r\n } else {\r\n var tempLineMin6 = lineMin6\r\n lineMin6 = lineMin6 - 2.5 * (lineMax6 - lineMin6)\r\n lineMax6 = lineMax6 + 0.5 * (lineMax6 - tempLineMin6)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas6\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData6\r\n option.yAxis[0].max = barMax6 * 2\r\n option.yAxis[1].min = lineMin6\r\n option.yAxis[1].max = lineMax6\r\n option.series[0].data = barSeriesData6\r\n option.series[1].data = lineSeriesData1_6\r\n option.series[2].data = lineSeriesData2_6\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.7 IDC对内(地市Z- A)服务能力的Top10省内地区请求流量分布\r\n function initEcharts7 () {\r\n var categoryData7 = inProvinceSentTrafficSummaryTop10In2Out.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData7 = inProvinceSentTrafficSummaryTop10In2Out.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryIn2Out.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryIn2Out.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_7 = []\r\n // 第二条线\r\n var lineSeriesData2_7 = []\r\n inProvinceSentTrafficSummaryTop10In2Out.forEach(t => {\r\n var findData = inProvinceSentTrafficSummaryTop10In2OutPre1st.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_7.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = inProvinceSentTrafficSummaryTop10In2OutPre2nd.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_7.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_7.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_7.push(0)\r\n lineSeriesData2_7.push(0)\r\n }\r\n })\r\n var copyLineSeriesData7 = [...lineSeriesData1_7, ...lineSeriesData2_7]\r\n var copyBarSeriesData7 = [...barSeriesData7]\r\n copyLineSeriesData7.sort((a, b) => a - b)\r\n copyBarSeriesData7.sort((a, b) => a.value - b.value)\r\n var barMax7 = copyBarSeriesData7.length > 0 ? copyBarSeriesData7[copyBarSeriesData7.length - 1].value : 50\r\n var lineMin7 = copyLineSeriesData7[0] ? copyLineSeriesData7[0] : 0\r\n var lineMax7 = copyLineSeriesData7.length > 0 ? copyLineSeriesData7[copyLineSeriesData7.length - 1] : 0\r\n if (lineMin7 == 0 && lineMin7 == lineMax7) {\r\n lineMin7 = -5\r\n lineMax7 = 1\r\n } else {\r\n var tempLineMin7 = lineMin7\r\n lineMin7 = lineMin7 - 2.5 * (lineMax7 - lineMin7)\r\n lineMax7 = lineMax7 + 0.5 * (lineMax7 - tempLineMin7)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas7\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData7\r\n option.yAxis[0].max = barMax7 * 2\r\n option.yAxis[1].min = lineMin7\r\n option.yAxis[1].max = lineMax7\r\n option.series[0].data = barSeriesData7\r\n option.series[1].data = lineSeriesData1_7\r\n option.series[2].data = lineSeriesData2_7\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.8 IDC对内(地市Z-A)服务能力的Top10省份响应流量分布\r\n function initEcharts8 () {\r\n var categoryData8 = inProvinceReceivedTrafficSummaryTop10In2Out.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData8 = inProvinceReceivedTrafficSummaryTop10In2Out.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryIn2Out.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryIn2Out.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n inProvinceReceivedTrafficSummaryTop10In2Out.forEach(t => {\r\n var findData = inProvinceReceivedTrafficSummaryTop10In2OutPre1st.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = inProvinceReceivedTrafficSummaryTop10In2OutPre2nd.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.11 IDC内容获取(地市A-Z)服务能力的Top10省内地区请求流量分布\r\n function initEcharts9 () {\r\n var categoryData9 = inProvinceSentTrafficSummaryTop10Out2In.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData9 = inProvinceSentTrafficSummaryTop10Out2In.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: trafficSummaryOut2In.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / trafficSummaryOut2In.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n inProvinceSentTrafficSummaryTop10Out2In.forEach(t => {\r\n var findData = inProvinceSentTrafficSummaryTop10Out2InPre1st.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_9.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = inProvinceSentTrafficSummaryTop10Out2InPre2nd.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_9.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.12 IDC内容获取(地市A-Z)服务能力的Top10省内地区响应流量分布\r\n function initEcharts10 () {\r\n var categoryData10 = inProvinceReceivedTrafficSummaryTop10Out2In.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = inProvinceReceivedTrafficSummaryTop10Out2In.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: trafficSummaryOut2In.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / trafficSummaryOut2In.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n inProvinceReceivedTrafficSummaryTop10Out2In.forEach(t => {\r\n var findData = inProvinceReceivedTrafficSummaryTop10Out2InPre1st.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = inProvinceReceivedTrafficSummaryTop10Out2InPre2nd.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n var option = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n // 4.9 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n function initEcharts11 () {\r\n var province11 = inProvinceTrafficSummaryTop3In2Out[0]\r\n var categoryData11 = []\r\n var seriesData11 = []\r\n var prevSeriesData11 = []\r\n var pprevSeriesData11 = []\r\n if (province11) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3In2OutPre2st,\r\n data: firstInProvinceTrafficTop5AppCompanyIn2Out,\r\n dataPre1st: firstInProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: firstInProvinceTrafficTop5AppCompanyIn2OutPre2st,\r\n province: province11,\r\n unit: \'client_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData11 = callback.categoryData\r\n seriesData11 = callback.seriesData\r\n prevSeriesData11 = callback.prevSeriesData\r\n pprevSeriesData11 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n option.xAxis.data = categoryData11\r\n option.series[2].data = seriesData11\r\n option.series[1].data = prevSeriesData11\r\n option.series[0].data = pprevSeriesData11\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts12 () {\r\n var province12 = inProvinceTrafficSummaryTop3In2Out[1]\r\n var categoryData12 = []\r\n var seriesData12 = []\r\n var prevSeriesData12 = []\r\n var pprevSeriesData12 = []\r\n if (province12) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3In2OutPre2st,\r\n data: secondInProvinceTrafficTop5AppCompanyIn2Out,\r\n dataPre1st: secondInProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: secondInProvinceTrafficTop5AppCompanyIn2OutPre2st,\r\n province: province12,\r\n unit: \'client_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData12 = callback.categoryData\r\n seriesData12 = callback.seriesData\r\n prevSeriesData12 = callback.prevSeriesData\r\n pprevSeriesData12 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas12\')\r\n option.xAxis.data = categoryData12\r\n option.series[2].data = seriesData12\r\n option.series[1].data = prevSeriesData12\r\n option.series[0].data = pprevSeriesData12\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts13 () {\r\n var province13 = inProvinceTrafficSummaryTop3In2Out[2]\r\n var categoryData13 = []\r\n var seriesData13 = []\r\n var prevSeriesData13 = []\r\n var pprevSeriesData13 = []\r\n if (province13) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3In2OutPre2st,\r\n data: thirdInProvinceTrafficTop5AppCompanyIn2Out,\r\n dataPre1st: thirdInProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: thirdInProvinceTrafficTop5AppCompanyIn2OutPre2st,\r\n province: province13,\r\n unit: \'client_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData13 = callback.categoryData\r\n seriesData13 = callback.seriesData\r\n prevSeriesData13 = callback.prevSeriesData\r\n pprevSeriesData13 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n option.xAxis.data = categoryData13\r\n option.series[2].data = seriesData13\r\n option.series[1].data = prevSeriesData13\r\n option.series[0].data = pprevSeriesData13\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.10 IDC对内(地市Z-A)服务能力的Top3省内地区主要APP流量占比\r\n function initEcharts14 () {\r\n var province14 = inProvinceTrafficSummaryTop3AppIn2Out[0]\r\n var categoryData14 = []\r\n var seriesData14 = []\r\n var prevSeriesData14 = []\r\n var pprevSeriesData14 = []\r\n if (province14) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre2st,\r\n data: firstInProvinceTrafficTop5RegionIn2Out,\r\n dataPre1st: firstInProvinceTrafficTop5RegionIn2OutPre1st,\r\n dataPre2st: firstInProvinceTrafficTop5RegionIn2OutPre2st,\r\n province: province14,\r\n unit: \'app_company\',\r\n unit1: \'client_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData14 = callback.categoryData\r\n seriesData14 = callback.seriesData\r\n prevSeriesData14 = callback.prevSeriesData\r\n pprevSeriesData14 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n option.xAxis.data = categoryData14\r\n option.series[2].data = seriesData14\r\n option.series[1].data = prevSeriesData14\r\n option.series[0].data = pprevSeriesData14\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts15 () {\r\n var province15 = inProvinceTrafficSummaryTop3AppIn2Out[1]\r\n var categoryData15 = []\r\n var seriesData15 = []\r\n var prevSeriesData15 = []\r\n var pprevSeriesData15 = []\r\n if (province15) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre2st,\r\n data: secondInProvinceTrafficTop5RegionIn2Out,\r\n dataPre1st: secondInProvinceTrafficTop5RegionIn2OutPre1st,\r\n dataPre2st: secondInProvinceTrafficTop5RegionIn2OutPre2st,\r\n province: province15,\r\n unit: \'app_company\',\r\n unit1: \'client_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData15 = callback.categoryData\r\n seriesData15 = callback.seriesData\r\n prevSeriesData15 = callback.prevSeriesData\r\n pprevSeriesData15 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas15\')\r\n option.xAxis.data = categoryData15\r\n option.series[2].data = seriesData15\r\n option.series[1].data = prevSeriesData15\r\n option.series[0].data = pprevSeriesData15\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts16 () {\r\n var province16 = inProvinceTrafficSummaryTop3AppIn2Out[2]\r\n var categoryData16 = []\r\n var seriesData16 = []\r\n var prevSeriesData16 = []\r\n var pprevSeriesData16 = []\r\n if (province16) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppIn2OutPre2st,\r\n data: thirdInProvinceTrafficTop5RegionIn2Out,\r\n dataPre1st: thirdInProvinceTrafficTop5RegionIn2OutPre1st,\r\n dataPre2st: thirdInProvinceTrafficTop5RegionIn2OutPre2st,\r\n province: province16,\r\n unit: \'app_company\',\r\n unit1: \'client_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData16 = callback.categoryData\r\n seriesData16 = callback.seriesData\r\n prevSeriesData16 = callback.prevSeriesData\r\n pprevSeriesData16 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas16\')\r\n option.xAxis.data = categoryData16\r\n option.series[2].data = seriesData16\r\n option.series[1].data = prevSeriesData16\r\n option.series[0].data = pprevSeriesData16\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.3 IDC对外(省Z-A)提供服务TOP3省份的APP的流量占比\r\n function initEcharts24 () {\r\n var province24 = provinceTrafficSummaryTop3In2Out[0]\r\n var categoryData24 = []\r\n var seriesData24 = []\r\n var prevSeriesData24 = []\r\n var pprevSeriesData24 = []\r\n if (province24) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3In2OutPre2st,\r\n data: firstProvinceTrafficTop5AppCompanyIn2Out,\r\n dataPre1st: firstProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: firstProvinceTrafficTop5AppCompanyZAPre2st,\r\n province: province24,\r\n unit: \'server_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData24 = callback.categoryData\r\n seriesData24 = callback.seriesData\r\n prevSeriesData24 = callback.prevSeriesData\r\n pprevSeriesData24 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas24\')\r\n option.xAxis.data = categoryData24\r\n option.series[2].data = seriesData24\r\n option.series[1].data = prevSeriesData24\r\n option.series[0].data = pprevSeriesData24\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts25 () {\r\n var province25 = provinceTrafficSummaryTop3In2Out[1]\r\n var categoryData25 = []\r\n var seriesData25 = []\r\n var prevSeriesData25 = []\r\n var pprevSeriesData25 = []\r\n if (province25) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3In2OutPre2st,\r\n data: secondProvinceTrafficTop5AppCIn2Outomapnty,\r\n dataPre1st: secondProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: secondProvinceTrafficTop5AppCompanyIn2OutPre2st,\r\n province: province25,\r\n unit: \'server_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData25 = callback.categoryData\r\n seriesData25 = callback.seriesData\r\n prevSeriesData25 = callback.prevSeriesData\r\n pprevSeriesData25 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas25\')\r\n option.xAxis.data = categoryData25\r\n option.series[2].data = seriesData25\r\n option.series[1].data = prevSeriesData25\r\n option.series[0].data = pprevSeriesData25\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts26 () {\r\n var province26 = provinceTrafficSummaryTop3In2Out[2]\r\n var categoryData26 = []\r\n var seriesData26 = []\r\n var prevSeriesData26 = []\r\n var pprevSeriesData26 = []\r\n if (province26) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3In2OutPre2st,\r\n data: thirdProvinceTrafficTop5AppCompanyIn2Out,\r\n dataPre1st: thirdProvinceTrafficTop5AppCompanyIn2OutPre1st,\r\n dataPre2st: thirdProvinceTrafficTop5AppCompanyIn2OutPre2st,\r\n province: province26,\r\n unit: \'server_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData26 = callback.categoryData\r\n seriesData26 = callback.seriesData\r\n prevSeriesData26 = callback.prevSeriesData\r\n pprevSeriesData26 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas26\')\r\n option.xAxis.data = categoryData26\r\n option.series[2].data = seriesData26\r\n option.series[1].data = prevSeriesData26\r\n option.series[0].data = pprevSeriesData26\r\n myChart.setOption(option)\r\n }\r\n\r\n // 4.4 IDC对外(省Z-A)提供服务TOP3 APP的省份流量占比\r\n function initEcharts27 () {\r\n var province27 = appTrafficSummaryTop3In2Out[0]\r\n var categoryData27 = []\r\n var seriesData27 = []\r\n var prevSeriesData27 = []\r\n var pprevSeriesData27 = []\r\n if (province27) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: appTrafficSummaryTop3In2OutPre2st,\r\n data: firstAppTrafficTop5ProvinceIn2Out,\r\n dataPre1st: firstAppTrafficTop5ProvinceIn2OutPre1st,\r\n dataPre2st: firstAppTrafficTop5ProvinceIn2OutPre2st,\r\n province: province27,\r\n unit: \'app_company\',\r\n unit1: \'server_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData27 = callback.categoryData\r\n seriesData27 = callback.seriesData\r\n prevSeriesData27 = callback.prevSeriesData\r\n pprevSeriesData27 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas27\')\r\n option.xAxis.data = categoryData27\r\n option.series[2].data = seriesData27\r\n option.series[1].data = prevSeriesData27\r\n option.series[0].data = pprevSeriesData27\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts28() {\r\n var province28 = appTrafficSummaryTop3In2Out[1]\r\n var categoryData28 = []\r\n var seriesData28 = []\r\n var prevSeriesData28 = []\r\n var pprevSeriesData28 = []\r\n if (province28) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: appTrafficSummaryTop3In2OutPre2st,\r\n data: secondeAppTrafficTop5ProvinceIn2Out,\r\n dataPre1st: secondAppTrafficTop5ProvinceIn2OutPre1st,\r\n dataPre2st: secondAppTrafficTop5ProvinceIn2OutPre2st,\r\n province: province28,\r\n unit: \'app_company\',\r\n unit1: \'server_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData28 = callback.categoryData\r\n seriesData28 = callback.seriesData\r\n prevSeriesData28 = callback.prevSeriesData\r\n pprevSeriesData28 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas28\')\r\n option.xAxis.data = categoryData28\r\n option.series[2].data = seriesData28\r\n option.series[1].data = prevSeriesData28\r\n option.series[0].data = pprevSeriesData28\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts29 () {\r\n var province29 = appTrafficSummaryTop3In2Out[2]\r\n var categoryData29 = []\r\n var seriesData29 = []\r\n var prevSeriesData29 = []\r\n var pprevSeriesData29 = []\r\n if (province29) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3In2OutPre1st,\r\n pprevProvince: appTrafficSummaryTop3In2OutPre2st,\r\n data: thirdAppTrafficTop5ProvinceIn2Out,\r\n dataPre1st: thirdAppTrafficTop5ProvinceIn2OutPre1st,\r\n dataPre2st: thirdAppTrafficTop5ProvinceIn2OutPre2st,\r\n province: province29,\r\n unit: \'app_company\',\r\n unit1: \'server_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData29 = callback.categoryData\r\n seriesData29 = callback.seriesData\r\n prevSeriesData29 = callback.prevSeriesData\r\n pprevSeriesData29 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas29\')\r\n option.xAxis.data = categoryData29\r\n option.series[2].data = seriesData29\r\n option.series[1].data = prevSeriesData29\r\n option.series[0].data = pprevSeriesData29\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts30 () {\r\n var province30 = provinceTrafficSummaryTop3Out2In[0]\r\n var categoryData30 = []\r\n var seriesData30 = []\r\n var prevSeriesData30 = []\r\n var pprevSeriesData30 = []\r\n if (province30) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3Out2InPre2st,\r\n data: firstProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: firstProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: firstProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province30,\r\n unit: \'client_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData30 = callback.categoryData\r\n seriesData30 = callback.seriesData\r\n prevSeriesData30 = callback.prevSeriesData\r\n pprevSeriesData30 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas30\')\r\n option.xAxis.data = categoryData30\r\n option.series[2].data = seriesData30\r\n option.series[1].data = prevSeriesData30\r\n option.series[0].data = pprevSeriesData30\r\n myChart.setOption(option)\r\n }\r\n function initEcharts31 () {\r\n var province31 = provinceTrafficSummaryTop3Out2In[1]\r\n var categoryData31 = []\r\n var seriesData31 = []\r\n var prevSeriesData31 = []\r\n var pprevSeriesData31 = []\r\n if (province31) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3Out2InPre2st,\r\n data: secondProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: secondProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: secondProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province31,\r\n unit: \'client_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData31 = callback.categoryData\r\n seriesData31 = callback.seriesData\r\n prevSeriesData31 = callback.prevSeriesData\r\n pprevSeriesData31 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas31\')\r\n option.xAxis.data = categoryData31\r\n option.series[2].data = seriesData31\r\n option.series[1].data = prevSeriesData31\r\n option.series[0].data = pprevSeriesData31\r\n myChart.setOption(option)\r\n }\r\n function initEcharts32 () {\r\n var province32 = provinceTrafficSummaryTop3Out2In[2]\r\n var categoryData32 = []\r\n var seriesData32 = []\r\n var prevSeriesData32 = []\r\n var pprevSeriesData32 = []\r\n if (province32) {\r\n const params = {\r\n prevProvince: provinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: provinceTrafficSummaryTop3Out2InPre2st,\r\n data: thirdProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: thirdProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: thirdProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province32,\r\n unit: \'client_super_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData32 = callback.categoryData\r\n seriesData32 = callback.seriesData\r\n prevSeriesData32 = callback.prevSeriesData\r\n pprevSeriesData32 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas32\')\r\n option.xAxis.data = categoryData32\r\n option.series[2].data = seriesData32\r\n option.series[1].data = prevSeriesData32\r\n option.series[0].data = pprevSeriesData32\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts33 () {\r\n var province33 = appTrafficSummaryTop3Out2In[0]\r\n var categoryData33 = []\r\n var seriesData33 = []\r\n var prevSeriesData33 = []\r\n var pprevSeriesData33 = []\r\n if (province33) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: appTrafficSummaryTop3Out2InPre2st,\r\n data: firstAppTrafficTop5ProvinceOut2In,\r\n dataPre1st: firstAppTrafficTop5ProvinceOut2InPre1st,\r\n dataPre2st: firstAppTrafficTop5ProvinceOut2InPre2st,\r\n province: province33,\r\n unit: \'app_company\',\r\n unit1: \'client_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData33 = callback.categoryData\r\n seriesData33 = callback.seriesData\r\n prevSeriesData33 = callback.prevSeriesData\r\n pprevSeriesData33 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas33\')\r\n option.xAxis.data = categoryData33\r\n option.series[2].data = seriesData33\r\n option.series[1].data = prevSeriesData33\r\n option.series[0].data = pprevSeriesData33\r\n myChart.setOption(option)\r\n }\r\n function initEcharts34 () {\r\n var province34 = appTrafficSummaryTop3Out2In[1]\r\n var categoryData34 = []\r\n var seriesData34 = []\r\n var prevSeriesData34 = []\r\n var pprevSeriesData34 = []\r\n if (province34) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: appTrafficSummaryTop3Out2InPre2st,\r\n data: secondeAppTrafficTop5ProvinceOut2In,\r\n dataPre1st: secondAppTrafficTop5ProvinceOut2InPre1st,\r\n dataPre2st: secondAppTrafficTop5ProvinceOut2InPre2st,\r\n province: province34,\r\n unit: \'app_company\',\r\n unit1: \'client_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData34 = callback.categoryData\r\n seriesData34 = callback.seriesData\r\n prevSeriesData34 = callback.prevSeriesData\r\n pprevSeriesData34 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas34\')\r\n option.xAxis.data = categoryData34\r\n option.series[2].data = seriesData34\r\n option.series[1].data = prevSeriesData34\r\n option.series[0].data = pprevSeriesData34\r\n myChart.setOption(option)\r\n }\r\n function initEcharts35 () {\r\n var province35 = appTrafficSummaryTop3Out2In[2]\r\n var categoryData35 = []\r\n var seriesData35 = []\r\n var prevSeriesData35 = []\r\n var pprevSeriesData35 = []\r\n if (province35) {\r\n const params = {\r\n prevProvince: appTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: appTrafficSummaryTop3Out2InPre2st,\r\n data: thirdAppTrafficTop5ProvinceOut2In,\r\n dataPre1st: thirdAppTrafficTop5ProvinceOut2InPre1st,\r\n dataPre2st: thirdAppTrafficTop5ProvinceOut2InPre2st,\r\n province: province35,\r\n unit: \'app_company\',\r\n unit1: \'client_super_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData35 = callback.categoryData\r\n seriesData35 = callback.seriesData\r\n prevSeriesData35 = callback.prevSeriesData\r\n pprevSeriesData35 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas35\')\r\n option.xAxis.data = categoryData35\r\n option.series[2].data = seriesData35\r\n option.series[1].data = prevSeriesData35\r\n option.series[0].data = pprevSeriesData35\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts36 () {\r\n var province36 = inProvinceTrafficSummaryTop3Out2In[0]\r\n var categoryData36 = []\r\n var seriesData36 = []\r\n var prevSeriesData36 = []\r\n var pprevSeriesData36 = []\r\n if (province36) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3Out2InPre2st,\r\n data: firstInProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: firstInProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: firstInProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province36,\r\n unit: \'server_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData36 = callback.categoryData\r\n seriesData36 = callback.seriesData\r\n prevSeriesData36 = callback.prevSeriesData\r\n pprevSeriesData36 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas36\')\r\n option.xAxis.data = categoryData36\r\n option.series[2].data = seriesData36\r\n option.series[1].data = prevSeriesData36\r\n option.series[0].data = pprevSeriesData36\r\n myChart.setOption(option)\r\n }\r\n function initEcharts37 () {\r\n var province37 = inProvinceTrafficSummaryTop3Out2In[1]\r\n var categoryData37 = []\r\n var seriesData37 = []\r\n var prevSeriesData37 = []\r\n var pprevSeriesData37 = []\r\n if (province37) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3Out2InPre2st,\r\n data: secondInProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: secondInProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: secondInProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province37,\r\n unit: \'server_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData37 = callback.categoryData\r\n seriesData37 = callback.seriesData\r\n prevSeriesData37 = callback.prevSeriesData\r\n pprevSeriesData37 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas37\')\r\n option.xAxis.data = categoryData37\r\n option.series[2].data = seriesData37\r\n option.series[1].data = prevSeriesData37\r\n option.series[0].data = pprevSeriesData37\r\n myChart.setOption(option)\r\n }\r\n function initEcharts38 () {\r\n var province38 = inProvinceTrafficSummaryTop3Out2In[2]\r\n var categoryData38 = []\r\n var seriesData38 = []\r\n var prevSeriesData38 = []\r\n var pprevSeriesData38 = []\r\n if (province38) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3Out2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3Out2InPre2st,\r\n data: thirdInProvinceTrafficTop5AppCompanyOut2In,\r\n dataPre1st: thirdInProvinceTrafficTop5AppCompanyOut2InPre1st,\r\n dataPre2st: thirdInProvinceTrafficTop5AppCompanyOut2InPre2st,\r\n province: province38,\r\n unit: \'server_admin_area\',\r\n unit1: \'app_company\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData38 = callback.categoryData\r\n seriesData38 = callback.seriesData\r\n prevSeriesData38 = callback.prevSeriesData\r\n pprevSeriesData38 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas38\')\r\n option.xAxis.data = categoryData38\r\n option.series[2].data = seriesData38\r\n option.series[1].data = prevSeriesData38\r\n option.series[0].data = pprevSeriesData38\r\n myChart.setOption(option)\r\n }\r\n function initEcharts39 () {\r\n var province39 = inProvinceTrafficSummaryTop3AppOut2In[0]\r\n var categoryData39 = []\r\n var seriesData39 = []\r\n var prevSeriesData39 = []\r\n var pprevSeriesData39 = []\r\n if (province39) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppOut2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppOut2InPre2st,\r\n data: firstInProvinceTrafficTop5RegionOut2In,\r\n dataPre1st: firstInProvinceTrafficTop5RegionOut2InPre1st,\r\n dataPre2st: firstInProvinceTrafficTop5RegionOut2InPre2st,\r\n province: province39,\r\n unit: \'app_company\',\r\n unit1: \'server_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData39 = callback.categoryData\r\n seriesData39 = callback.seriesData\r\n prevSeriesData39 = callback.prevSeriesData\r\n pprevSeriesData39 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas39\')\r\n option.xAxis.data = categoryData39\r\n option.series[2].data = seriesData39\r\n option.series[1].data = prevSeriesData39\r\n option.series[0].data = pprevSeriesData39\r\n myChart.setOption(option)\r\n }\r\n function initEcharts40 () {\r\n var province40 = inProvinceTrafficSummaryTop3AppOut2In[1]\r\n var categoryData40 = []\r\n var seriesData40 = []\r\n var prevSeriesData40 = []\r\n var pprevSeriesData40 = []\r\n if (province40) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppOut2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppOut2InPre2st,\r\n data: secondInProvinceTrafficTop5RegionOut2In,\r\n dataPre1st: secondInProvinceTrafficTop5RegionOut2InPre1st,\r\n dataPre2st: secondInProvinceTrafficTop5RegionOut2InPre2st,\r\n province: province40,\r\n unit: \'app_company\',\r\n unit1: \'server_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData40 = callback.categoryData\r\n seriesData40 = callback.seriesData\r\n prevSeriesData40 = callback.prevSeriesData\r\n pprevSeriesData40 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas40\')\r\n option.series[2].data = seriesData40\r\n option.series[1].data = prevSeriesData40\r\n option.series[0].data = pprevSeriesData40\r\n myChart.setOption(option)\r\n }\r\n function initEcharts41 () {\r\n var province41 = inProvinceTrafficSummaryTop3AppOut2In[2]\r\n var categoryData41 = []\r\n var seriesData41 = []\r\n var prevSeriesData41 = []\r\n var pprevSeriesData41 = []\r\n if (province41) {\r\n const params = {\r\n prevProvince: inProvinceTrafficSummaryTop3AppOut2InPre1st,\r\n pprevProvince: inProvinceTrafficSummaryTop3AppOut2InPre2st,\r\n data: thirdInProvinceTrafficTop5RegionOut2In,\r\n dataPre1st: thirdInProvinceTrafficTop5RegionOut2InPre1st,\r\n dataPre2st: thirdInProvinceTrafficTop5RegionOut2InPre2st,\r\n province: province41,\r\n unit: \'app_company\',\r\n unit1: \'server_admin_area\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData41 = callback.categoryData\r\n seriesData41 = callback.seriesData\r\n prevSeriesData41 = callback.prevSeriesData\r\n pprevSeriesData41 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas41\')\r\n option.xAxis.data = categoryData41\r\n option.series[2].data = seriesData41\r\n option.series[1].data = prevSeriesData41\r\n option.series[0].data = pprevSeriesData41\r\n myChart.setOption(option)\r\n }\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n // 省内访问省外\r\n function initEcharts42 () {\r\n var Data42 = []\r\n var Links42 = []\r\n linkDirectionTrafficIn2Out.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data42.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links42 = linkDirectionTrafficIn2Out.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data42 = Array.from(new Set(Data42))\r\n Data42 = Data42.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas42\')\r\n sankeyOption.series[0].data = Data42\r\n sankeyOption.series[0].links = Links42\r\n myChart.setOption(sankeyOption)\r\n }\r\n\r\n // 上行链路 TOP5 App流量占比\r\n function initEcharts43 () {\r\n var province43 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西宁\')\r\n var categoryData43 = []\r\n var seriesData43 = []\r\n var prevSeriesData43 = []\r\n var pprevSeriesData43 = []\r\n if (province43) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNAppIn2OutXN,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppIn2OutXN,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppIn2OutXN,\r\n province: province43,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData43 = callback.categoryData\r\n seriesData43 = callback.seriesData\r\n prevSeriesData43 = callback.prevSeriesData\r\n pprevSeriesData43 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas43\')\r\n option.xAxis.data = categoryData43\r\n option.series[2].data = seriesData43\r\n option.series[1].data = prevSeriesData43\r\n option.series[0].data = pprevSeriesData43\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts44 () {\r\n var province44 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'太原\')\r\n var categoryData44 = []\r\n var seriesData44 = []\r\n var prevSeriesData44 = []\r\n var pprevSeriesData44 = []\r\n if (province44) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNAppIn2OutTY,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppIn2OutTY,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppIn2OutTY,\r\n province: province44,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData44 = callback.categoryData\r\n seriesData44 = callback.seriesData\r\n prevSeriesData44 = callback.prevSeriesData\r\n pprevSeriesData44 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas44\')\r\n option.xAxis.data = categoryData44\r\n option.series[2].data = seriesData44\r\n option.series[1].data = prevSeriesData44\r\n option.series[0].data = pprevSeriesData44\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts45 () {\r\n var province45 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西安\')\r\n var categoryData45 = []\r\n var seriesData45 = []\r\n var prevSeriesData45 = []\r\n var pprevSeriesData45 = []\r\n if (province45) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNAppIn2OutXA,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppIn2OutXA,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppIn2OutXA,\r\n province: province45,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData45 = callback.categoryData\r\n seriesData45 = callback.seriesData\r\n prevSeriesData45 = callback.prevSeriesData\r\n pprevSeriesData45 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas45\')\r\n option.xAxis.data = categoryData45\r\n option.series[2].data = seriesData45\r\n option.series[1].data = prevSeriesData45\r\n option.series[0].data = pprevSeriesData45\r\n myChart.setOption(option)\r\n }\r\n\r\n // 下行链路 TOP5 App流量占比\r\n function initEcharts46 () {\r\n var province46 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西宁\')\r\n var categoryData46 = []\r\n var seriesData46 = []\r\n var prevSeriesData46 = []\r\n var pprevSeriesData46 = []\r\n if (province46) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNAppIn2OutXN,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppIn2OutXN,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppIn2OutXN,\r\n province: province46,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData46 = callback.categoryData\r\n seriesData46 = callback.seriesData\r\n prevSeriesData46 = callback.prevSeriesData\r\n pprevSeriesData46 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas46\')\r\n option.xAxis.data = categoryData46\r\n option.series[2].data = seriesData46\r\n option.series[1].data = prevSeriesData46\r\n option.series[0].data = pprevSeriesData46\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts47 () {\r\n var province47 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'太原\')\r\n var categoryData47 = []\r\n var seriesData47 = []\r\n var prevSeriesData47 = []\r\n var pprevSeriesData47 = []\r\n if (province47) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNAppIn2OutTY,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppIn2OutTY,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppIn2OutTY,\r\n province: province47,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData47 = callback.categoryData\r\n seriesData47 = callback.seriesData\r\n prevSeriesData47 = callback.prevSeriesData\r\n pprevSeriesData47 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas47\')\r\n option.xAxis.data = categoryData47\r\n option.series[2].data = seriesData47\r\n option.series[1].data = prevSeriesData47\r\n option.series[0].data = pprevSeriesData47\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts48 () {\r\n var province48 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西安\')\r\n var categoryData48 = []\r\n var seriesData48 = []\r\n var prevSeriesData48 = []\r\n var pprevSeriesData48 = []\r\n if (province48) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNAppIn2OutXA,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppIn2OutXA,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppIn2OutXA,\r\n province: province48,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData48 = callback.categoryData\r\n seriesData48 = callback.seriesData\r\n prevSeriesData48 = callback.prevSeriesData\r\n pprevSeriesData48 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas48\')\r\n option.xAxis.data = categoryData48\r\n option.series[2].data = seriesData48\r\n option.series[1].data = prevSeriesData48\r\n option.series[0].data = pprevSeriesData48\r\n myChart.setOption(option)\r\n }\r\n\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts49 () {\r\n var province49 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西宁\')\r\n var categoryData49 = []\r\n var seriesData49 = []\r\n var prevSeriesData49 = []\r\n var pprevSeriesData49 = []\r\n if (province49) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNProvinceIn2OutXN,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceIn2OutXN,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceIn2OutXN,\r\n province: province49,\r\n unit: \'egress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData49 = callback.categoryData\r\n seriesData49 = callback.seriesData\r\n prevSeriesData49 = callback.prevSeriesData\r\n pprevSeriesData49 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas49\')\r\n option.xAxis.data = categoryData49\r\n option.series[2].data = seriesData49\r\n option.series[1].data = prevSeriesData49\r\n option.series[0].data = pprevSeriesData49\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts50 () {\r\n var province50 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'太原\')\r\n var categoryData50 = []\r\n var seriesData50 = []\r\n var prevSeriesData50 = []\r\n var pprevSeriesData50 = []\r\n if (province50) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNProvinceIn2OutTY,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceIn2OutTY,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceIn2OutTY,\r\n province: province50,\r\n unit: \'egress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData50 = callback.categoryData\r\n seriesData50 = callback.seriesData\r\n prevSeriesData50 = callback.prevSeriesData\r\n pprevSeriesData50 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas50\')\r\n option.xAxis.data = categoryData50\r\n option.series[2].data = seriesData50\r\n option.series[1].data = prevSeriesData50\r\n option.series[0].data = pprevSeriesData50\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts51 () {\r\n var province51 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西安\')\r\n var categoryData51 = []\r\n var seriesData51 = []\r\n var prevSeriesData51 = []\r\n var pprevSeriesData51 = []\r\n if (province51) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkEgressTrafficIn2Out,\r\n data: linkEgressTrafficTopNProvinceIn2OutXA,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceIn2OutXA,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceIn2OutXA,\r\n province: province51,\r\n unit: \'egress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData51 = callback.categoryData\r\n seriesData51 = callback.seriesData\r\n prevSeriesData51 = callback.prevSeriesData\r\n pprevSeriesData51 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas51\')\r\n option.xAxis.data = categoryData51\r\n option.series[2].data = seriesData51\r\n option.series[1].data = prevSeriesData51\r\n option.series[0].data = pprevSeriesData51\r\n myChart.setOption(option)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts52 () {\r\n var province52 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西宁\')\r\n var categoryData52 = []\r\n var seriesData52 = []\r\n var prevSeriesData52 = []\r\n var pprevSeriesData52 = []\r\n if (province52) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNProvinceIn2OutXN,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceIn2OutXN,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceIn2OutXN,\r\n province: province52,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData52 = callback.categoryData\r\n seriesData52 = callback.seriesData\r\n prevSeriesData52 = callback.prevSeriesData\r\n pprevSeriesData52 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas52\')\r\n option.xAxis.data = categoryData52\r\n option.series[2].data = seriesData52\r\n option.series[1].data = prevSeriesData52\r\n option.series[0].data = pprevSeriesData52\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts53 () {\r\n var province53 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'太原\')\r\n var categoryData53 = []\r\n var seriesData53 = []\r\n var prevSeriesData53 = []\r\n var pprevSeriesData53 = []\r\n if (province53) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNProvinceIn2OutTY,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceIn2OutTY,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceIn2OutTY,\r\n province: province53,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData53 = callback.categoryData\r\n seriesData53 = callback.seriesData\r\n prevSeriesData53 = callback.prevSeriesData\r\n pprevSeriesData53 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas53\')\r\n option.xAxis.data = categoryData53\r\n option.series[2].data = seriesData53\r\n option.series[1].data = prevSeriesData53\r\n option.series[0].data = pprevSeriesData53\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts54 () {\r\n var province54 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西安\')\r\n var categoryData54 = []\r\n var seriesData54 = []\r\n var prevSeriesData54 = []\r\n var pprevSeriesData54 = []\r\n if (province54) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficIn2Out,\r\n pprevProvince: pre2ndLinkIngressTrafficIn2Out,\r\n data: linkIngressTrafficTopNProvinceIn2OutXA,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceIn2OutXA,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceIn2OutXA,\r\n province: province54,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'server_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData54 = callback.categoryData\r\n seriesData54 = callback.seriesData\r\n prevSeriesData54 = callback.prevSeriesData\r\n pprevSeriesData54 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas54\')\r\n option.xAxis.data = categoryData54\r\n option.series[2].data = seriesData54\r\n option.series[1].data = prevSeriesData54\r\n option.series[0].data = pprevSeriesData54\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内\r\n function initEcharts55 () {\r\n var Data55 = []\r\n var Links55 = []\r\n linkDirectionTrafficOut2In.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data55.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links55 = linkDirectionTrafficOut2In.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data55 = Array.from(new Set(Data55))\r\n Data55 = Data55.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas55\')\r\n sankeyOption.series[0].data = Data55\r\n sankeyOption.series[0].links = Links55\r\n myChart.setOption(sankeyOption)\r\n }\r\n\r\n // 上行链路 TOP5 App流量占比\r\n function initEcharts56 () {\r\n var province56 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西宁\')\r\n var categoryData56 = []\r\n var seriesData56 = []\r\n var prevSeriesData56 = []\r\n var pprevSeriesData56 = []\r\n if (province56) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNAppOut2InXN,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppOut2InXN,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppOut2InXN,\r\n province: province56,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData56 = callback.categoryData\r\n seriesData56 = callback.seriesData\r\n prevSeriesData56 = callback.prevSeriesData\r\n pprevSeriesData56 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas56\')\r\n option.xAxis.data = categoryData56\r\n option.series[2].data = seriesData56\r\n option.series[1].data = prevSeriesData56\r\n option.series[0].data = pprevSeriesData56\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts57 () {\r\n var province57 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'太原\')\r\n var categoryData57 = []\r\n var seriesData57 = []\r\n var prevSeriesData57 = []\r\n var pprevSeriesData57 = []\r\n if (province57) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNAppOut2InTY,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppOut2InTY,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppOut2InTY,\r\n province: province57,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData57 = callback.categoryData\r\n seriesData57 = callback.seriesData\r\n prevSeriesData57 = callback.prevSeriesData\r\n pprevSeriesData57 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas57\')\r\n option.xAxis.data = categoryData57\r\n option.series[2].data = seriesData57\r\n option.series[1].data = prevSeriesData57\r\n option.series[0].data = pprevSeriesData57\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts58 () {\r\n var province58 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西安\')\r\n var categoryData58 = []\r\n var seriesData58 = []\r\n var prevSeriesData58 = []\r\n var pprevSeriesData58 = []\r\n if (province58) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNAppOut2InXA,\r\n dataPre1st: pre1stLinkEgressTrafficTopNAppOut2InXA,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNAppOut2InXA,\r\n province: province58,\r\n unit: \'egress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData58 = callback.categoryData\r\n seriesData58 = callback.seriesData\r\n prevSeriesData58 = callback.prevSeriesData\r\n pprevSeriesData58 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas58\')\r\n option.xAxis.data = categoryData58\r\n option.series[2].data = seriesData58\r\n option.series[1].data = prevSeriesData58\r\n option.series[0].data = pprevSeriesData58\r\n myChart.setOption(option)\r\n }\r\n\r\n // 下行链路 TOP5 App流量占比\r\n function initEcharts59 () {\r\n var province59 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西宁\')\r\n var categoryData59 = []\r\n var seriesData59 = []\r\n var prevSeriesData59 = []\r\n var pprevSeriesData59 = []\r\n if (province59) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNAppOut2InXN,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppOut2InXN,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppOut2InXN,\r\n province: province59,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData59 = callback.categoryData\r\n seriesData59 = callback.seriesData\r\n prevSeriesData59 = callback.prevSeriesData\r\n pprevSeriesData59 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas59\')\r\n option.xAxis.data = categoryData59\r\n option.series[2].data = seriesData59\r\n option.series[1].data = prevSeriesData59\r\n option.series[0].data = pprevSeriesData59\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts60 () {\r\n var province60 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'太原\')\r\n var categoryData60 = []\r\n var seriesData60 = []\r\n var prevSeriesData60 = []\r\n var pprevSeriesData60 = []\r\n if (province60) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNAppOut2InTY,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppOut2InTY,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppOut2InTY,\r\n province: province60,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData60 = callback.categoryData\r\n seriesData60 = callback.seriesData\r\n prevSeriesData60 = callback.prevSeriesData\r\n pprevSeriesData60 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas60\')\r\n option.xAxis.data = categoryData60\r\n option.series[2].data = seriesData60\r\n option.series[1].data = prevSeriesData60\r\n option.series[0].data = pprevSeriesData60\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts61 () {\r\n var province61 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西安\')\r\n var categoryData61 = []\r\n var seriesData61 = []\r\n var prevSeriesData61 = []\r\n var pprevSeriesData61 = []\r\n if (province61) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNAppOut2InXA,\r\n dataPre1st: pre1stLinkIngressTrafficTopNAppOut2InXA,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNAppOut2InXA,\r\n province: province61,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'app_company\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData61 = callback.categoryData\r\n seriesData61 = callback.seriesData\r\n prevSeriesData61 = callback.prevSeriesData\r\n pprevSeriesData61 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas61\')\r\n option.xAxis.data = categoryData61\r\n option.series[2].data = seriesData61\r\n option.series[1].data = prevSeriesData61\r\n option.series[0].data = pprevSeriesData61\r\n myChart.setOption(option)\r\n }\r\n\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts62 () {\r\n var province62 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西宁\')\r\n var categoryData62 = []\r\n var seriesData62 = []\r\n var prevSeriesData62 = []\r\n var pprevSeriesData62 = []\r\n if (province62) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNProvinceOut2InXN,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceOut2InXN,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceOut2InXN,\r\n province: province62,\r\n unit: \'egress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData62 = callback.categoryData\r\n seriesData62 = callback.seriesData\r\n prevSeriesData62 = callback.prevSeriesData\r\n pprevSeriesData62 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas62\')\r\n option.xAxis.data = categoryData62\r\n option.series[2].data = seriesData62\r\n option.series[1].data = prevSeriesData62\r\n option.series[0].data = pprevSeriesData62\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts63 () {\r\n var province63 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'太原\')\r\n var categoryData63 = []\r\n var seriesData63 = []\r\n var prevSeriesData63 = []\r\n var pprevSeriesData63 = []\r\n if (province63) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNProvinceOut2InTY,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceOut2InTY,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceOut2InTY,\r\n province: province63,\r\n unit: \'egress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData63 = callback.categoryData\r\n seriesData63 = callback.seriesData\r\n prevSeriesData63 = callback.prevSeriesData\r\n pprevSeriesData63 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas63\')\r\n option.xAxis.data = categoryData63\r\n option.series[2].data = seriesData63\r\n option.series[1].data = prevSeriesData63\r\n option.series[0].data = pprevSeriesData63\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts64 () {\r\n var province64 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西安\')\r\n var categoryData64 = []\r\n var seriesData64 = []\r\n var prevSeriesData64 = []\r\n var pprevSeriesData64 = []\r\n if (province64) {\r\n const params = {\r\n prevProvince: pre1stLinkEgressTrafficOut2In,\r\n pprevProvince: pre2ndLinkEgressTrafficOut2In,\r\n data: linkEgressTrafficTopNProvinceOut2InXA,\r\n dataPre1st: pre1stLinkEgressTrafficTopNProvinceOut2InXA,\r\n dataPre2st: pre2ndLinkEgressTrafficTopNProvinceOut2InXA,\r\n province: province64,\r\n unit: \'egress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'egress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData64 = callback.categoryData\r\n seriesData64 = callback.seriesData\r\n prevSeriesData64 = callback.prevSeriesData\r\n pprevSeriesData64 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas64\')\r\n option.xAxis.data = categoryData64\r\n option.series[2].data = seriesData64\r\n option.series[1].data = prevSeriesData64\r\n option.series[0].data = pprevSeriesData64\r\n myChart.setOption(option)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts65 () {\r\n var province65 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西宁\')\r\n var categoryData65 = []\r\n var seriesData65 = []\r\n var prevSeriesData65 = []\r\n var pprevSeriesData65 = []\r\n if (province65) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNProvinceOut2InXN,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceOut2InXN,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceOut2InXN,\r\n province: province65,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData65 = callback.categoryData\r\n seriesData65 = callback.seriesData\r\n prevSeriesData65 = callback.prevSeriesData\r\n pprevSeriesData65 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas65\')\r\n option.xAxis.data = categoryData65\r\n option.series[2].data = seriesData65\r\n option.series[1].data = prevSeriesData65\r\n option.series[0].data = pprevSeriesData65\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts66 () {\r\n var province66 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'太原\')\r\n var categoryData66 = []\r\n var seriesData66 = []\r\n var prevSeriesData66 = []\r\n var pprevSeriesData66 = []\r\n if (province66) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNProvinceOut2InTY,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceOut2InTY,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceOut2InTY,\r\n province: province66,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData66 = callback.categoryData\r\n seriesData66 = callback.seriesData\r\n prevSeriesData66 = callback.prevSeriesData\r\n pprevSeriesData66 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas66\')\r\n option.xAxis.data = categoryData66\r\n option.series[2].data = seriesData66\r\n option.series[1].data = prevSeriesData66\r\n option.series[0].data = pprevSeriesData66\r\n myChart.setOption(option)\r\n }\r\n\r\n function initEcharts67 () {\r\n var province67 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西安\')\r\n var categoryData67 = []\r\n var seriesData67 = []\r\n var prevSeriesData67 = []\r\n var pprevSeriesData67 = []\r\n if (province67) {\r\n const params = {\r\n prevProvince: pre1stLinkIngressTrafficOut2In,\r\n pprevProvince: pre2ndLinkIngressTrafficOut2In,\r\n data: linkIngressTrafficTopNProvinceOut2InXA,\r\n dataPre1st: pre1stLinkIngressTrafficTopNProvinceOut2InXA,\r\n dataPre2st: pre2ndLinkIngressTrafficTopNProvinceOut2InXA,\r\n province: province67,\r\n unit: \'ingress_link_direction\',\r\n unit1: \'client_super_admin_area\',\r\n unit2: \'ingress_bytes\'\r\n }\r\n const callback = get3DaysBarCharts(params)\r\n categoryData67 = callback.categoryData\r\n seriesData67 = callback.seriesData\r\n prevSeriesData67 = callback.prevSeriesData\r\n pprevSeriesData67 = callback.pprevSeriesData\r\n }\r\n var myChart = initEchartsInstance(\'canvas67\')\r\n option.xAxis.data = categoryData67\r\n option.series[2].data = seriesData67\r\n option.series[1].data = prevSeriesData67\r\n option.series[0].data = pprevSeriesData67\r\n myChart.setOption(option)\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts6() } catch (e) { console.error(e) }\r\n try { initEcharts7() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts12() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts15() } catch (e) { console.error(e) }\r\n try { initEcharts16() } catch (e) { console.error(e) }\r\n try { initEcharts24() } catch (e) { console.error(e) }\r\n try { initEcharts25() } catch (e) { console.error(e) }\r\n try { initEcharts26() } catch (e) { console.error(e) }\r\n try { initEcharts27() } catch (e) { console.error(e) }\r\n try { initEcharts28() } catch (e) { console.error(e) }\r\n try { initEcharts29() } catch (e) { console.error(e) }\r\n try { initEcharts30() } catch (e) { console.error(e) }\r\n try { initEcharts31() } catch (e) { console.error(e) }\r\n try { initEcharts32() } catch (e) { console.error(e) }\r\n try { initEcharts33() } catch (e) { console.error(e) }\r\n try { initEcharts34() } catch (e) { console.error(e) }\r\n try { initEcharts35() } catch (e) { console.error(e) }\r\n try { initEcharts36() } catch (e) { console.error(e) }\r\n try { initEcharts37() } catch (e) { console.error(e) }\r\n try { initEcharts38() } catch (e) { console.error(e) }\r\n try { initEcharts39() } catch (e) { console.error(e) }\r\n try { initEcharts40() } catch (e) { console.error(e) }\r\n try { initEcharts41() } catch (e) { console.error(e) }\r\n try { initEcharts42() } catch (e) { console.error(e) }\r\n try { initEcharts43() } catch (e) { console.error(e) }\r\n try { initEcharts44() } catch (e) { console.error(e) }\r\n try { initEcharts45() } catch (e) { console.error(e) }\r\n try { initEcharts46() } catch (e) { console.error(e) }\r\n try { initEcharts47() } catch (e) { console.error(e) }\r\n try { initEcharts48() } catch (e) { console.error(e) }\r\n try { initEcharts49() } catch (e) { console.error(e) }\r\n try { initEcharts50() } catch (e) { console.error(e) }\r\n try { initEcharts51() } catch (e) { console.error(e) }\r\n try { initEcharts52() } catch (e) { console.error(e) }\r\n try { initEcharts53() } catch (e) { console.error(e) }\r\n try { initEcharts54() } catch (e) { console.error(e) }\r\n try { initEcharts55() } catch (e) { console.error(e) }\r\n try { initEcharts56() } catch (e) { console.error(e) }\r\n try { initEcharts57() } catch (e) { console.error(e) }\r\n try { initEcharts58() } catch (e) { console.error(e) }\r\n try { initEcharts59() } catch (e) { console.error(e) }\r\n try { initEcharts60() } catch (e) { console.error(e) }\r\n try { initEcharts61() } catch (e) { console.error(e) }\r\n try { initEcharts62() } catch (e) { console.error(e) }\r\n try { initEcharts63() } catch (e) { console.error(e) }\r\n try { initEcharts64() } catch (e) { console.error(e) }\r\n try { initEcharts65() } catch (e) { console.error(e) }\r\n try { initEcharts66() } catch (e) { console.error(e) }\r\n try { initEcharts67() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummary\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRatePre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRatePre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\'\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\'\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\'\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\'\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficSummaryIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficRateTrend\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10Pre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(max(rate), 4) AS rate_max, ROUND(min(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10 ) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appCompanyTrafficTop10Pre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentTop10AppCompany\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"TCPConnectionEstablishmentTop10AppCompanyPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateTop10AppCompany\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company ORDER BY SUM(bytes) DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"packetRetransRateTop10AppCompanyPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10In2OutPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10In2OutPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY server_super_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY server_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY server_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3In2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyZAPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCIn2Outomapnty\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND client_zone = \'internal\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_super_admin_area) GROUP BY app_company, server_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3In2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondeAppTrafficTop5ProvinceIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'external\' AND client_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_super_admin_area, app_company) GROUP BY server_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceSentTrafficSummaryTop10Out2InPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceReceivedTrafficSummaryTop10Out2InPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10In2OutPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10In2OutPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3In2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3In2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3In2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area IN ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_admin_area AS client_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY client_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_admin_area) GROUP BY app_company, client_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionIn2OutPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_admin_area AS client_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'internal\' AND server_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_admin_area, app_company) GROUP BY client_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionIn2OutPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(bytes_sent_rate), 4), 0) AS bytes_sent_rate_avg, ROUND(MAX(bytes_sent_rate), 4) AS bytes_sent_rate_max, ROUND(MIN(bytes_sent_rate), 4) AS bytes_sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, SUM(sent_bytes + received_bytes) AS bytes, (bytes_sent * 8) / (300) AS bytes_sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceSentTrafficSummaryTop10Out2InPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(bytes_received_rate), 4), 0) AS bytes_received_rate_avg, ROUND(MAX(bytes_received_rate), 4) AS bytes_received_rate_max, ROUND(MIN(bytes_received_rate), 4) AS bytes_received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes, (bytes_received * 8) / (300) AS bytes_received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceReceivedTrafficSummaryTop10Out2InPre2nd\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY client_super_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceTrafficSummaryTop3Out2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, client_super_admin_area) GROUP BY app_company, client_super_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"appTrafficSummaryTop3Out2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstAppTrafficTop5ProvinceOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondeAppTrafficTop5ProvinceOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondAppTrafficTop5ProvinceOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(client_super_admin_area) AND server_zone = \'internal\' AND client_zone = \'external\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, client_super_admin_area, app_company) GROUP BY client_super_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdAppTrafficTop5ProvinceOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3Out2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY server_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3Out2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY server_admin_area\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3Out2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT server_admin_area AS server_admin_area, app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND notEmpty(app_company) AND server_zone = \'internal\' AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY server_admin_area ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, app_company, server_admin_area) GROUP BY app_company, server_admin_area ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5AppCompanyOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY bytes DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3 ) GROUP BY app_company\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"inProvinceTrafficSummaryTop3AppOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 0, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"firstInProvinceTrafficTop5RegionOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 1, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"secondInProvinceTrafficTop5RegionOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionOut2InPre1st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(bytes) AS bytes, IFNULL(ROUND(QUANTILE(rate,0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate,0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate,0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, ROUND(MAX(rate), 4) AS rate_max, ROUND(MIN(rate), 4) AS rate_min FROM ( SELECT app_company AS app_company, server_admin_area AS server_admin_area, SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / (300) AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND app_company in ( SELECT app_company AS app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_zone = \'external\' AND server_zone = \'internal\' GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 2, 1 ) GROUP BY granularity, server_admin_area, app_company) GROUP BY server_admin_area, app_company ORDER BY bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"thirdInProvinceTrafficTop5RegionOut2InPre2st\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(received_bytes) AS ingress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(received_bytes) AS egress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, app_company AS app_company, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, app_company ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, app_company AS app_company, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY app_company ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, app_company ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNAppOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXA\"\r\n }\r\n ]\r\n}', 1, '2022-06-29 17:27:02', 1, '2022-06-29 17:27:08', NULL); +INSERT INTO `report_category` VALUES (7, 'IDC服务提供商报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IDC服务提供商${Provider}质量监测报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IDC服务提供商${Provider}质量监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 IDC ${Provider}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 域外访问域内${Provider}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 域内访问域外的${Provider}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 IDC访问各省份${Provider}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 IDC访问各省份${Provider}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问IDC ${Provider}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问IDC ${Provider}服务的Top 10 省份响应流量分布 </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 IDC访问省内${Provider}服务的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 IDC访问省内${Provider}服务的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问IDC ${Provider}服务的Top 10 省内地区请求流量分布 </div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问IDC ${Provider}服务的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n \r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问IDC 应用服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n \r\n // 省外访问省内服${Provider}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${Provider}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${Provider}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${Provider}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${Provider}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${Provider}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${Provider}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${Provider}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${Provider}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${Provider}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${Provider}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${Provider}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外${Provider}服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${Provider}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内${Provider}服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${Provider}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外${Provider}服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${Provider}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内${Provider}服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${Provider}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"queryParam\":[{\r\n \"key\":\"Provider\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.provider\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"dataset\": [\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app_company IN (\'${Provider}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app_company IN (\'${Provider}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app_company IN (\'${Provider}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app_company IN (\'${Provider}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time <${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app_company IN (\'${Provider}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app_company IN (\'${Provider}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app_company IN (\'${Provider}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}\r\n', 1, '2022-08-31 09:43:36', 1, '2022-08-31 09:43:39', NULL); +INSERT INTO `report_category` VALUES (8, 'IDC应用程序报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IDC应用程序${overviewApp}报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IDC服务提供商${overviewApp}质量监测报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 IDC ${overviewApp}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 域外访问域内${overviewApp}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 域内访问域外的${overviewApp}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 IDC访问各省份${overviewApp}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 IDC访问各省份${overviewApp}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问IDC ${overviewApp}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问IDC ${overviewApp}服务的Top 10 省份响应流量分布 </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 IDC访问省内${overviewApp}服务的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 IDC访问省内${overviewApp}服务的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问IDC ${overviewApp}服务的Top 10 省内地区请求流量分布 </div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问IDC ${overviewApp}服务的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n \r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问IDC 应用服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n \r\n // 省外访问省内服${overviewApp}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${overviewApp}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${overviewApp}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${overviewApp}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${overviewApp}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${overviewApp}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${overviewApp}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${overviewApp}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${overviewApp}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${overviewApp}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${overviewApp}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${overviewApp}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外${overviewApp}服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${overviewApp}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内${overviewApp}服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${overviewApp}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外${overviewApp}服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${overviewApp}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内${overviewApp}服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${overviewApp}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"queryParam\":[{\r\n \"key\":\"overviewApp\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.overviewApp\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"dataset\": [\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent,SUM(received_bytes) AS bytes_received,SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app IN (\'${overviewApp}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app IN (\'${overviewApp}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time <${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}\r\n', 1, '2022-10-18 22:49:25', 1, '2022-10-18 22:49:32', NULL); +INSERT INTO `report_category` VALUES (11, '出入口应用程序报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>出入口${overviewApp}应用程序报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">出入口${overviewApp}应用程序报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 出入口${overviewApp}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 省外访问省内${overviewApp}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 省内访问省外的${overviewApp}服务的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 省内访问省外${overviewApp}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 省内访问省外${overviewApp}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 省外访问省内${overviewApp}服务的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 省外访问省内${overviewApp}服务的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 省内访问省外${overviewApp}服务的Top 10 省内地区的请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 省内访问省外${overviewApp}服务的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省外访问省内${overviewApp}服务的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省外访问省内${overviewApp}服务的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n<div class=\"header2\">四.链路方向流量构成</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas42\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图12 省内访问省外${overviewApp}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas49\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas50\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas51\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas52\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas53\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas54\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange9\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange20\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange20\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图13 省内访问省外${overviewApp}各链路Top5 省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas55\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图14 省外访问省内${overviewApp}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas62\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas63\" ></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas64\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas65\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas \" id=\"canvas66\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas67\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange11\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange22\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange22\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图15 省外访问省内${overviewApp}各链路Top5 省份流量占比</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n // xxx服务总流量 (xxxService traffic total)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前一周期(Pre 1st xxxService traffic total)\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期(Pre 2st xxxService traffic total)\r\n var pre2ndxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 省外访问省内服${overviewApp}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${overviewApp}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${overviewApp}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${overviewApp}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量情况\r\n // 省外访问省内${overviewApp}服务的服务质量\r\n // TCP会话创建延迟(xxxService Out2in TCP)\r\n var xxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in TCP)\r\n var pre1stxxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService Out2in retrans packets)\r\n var xxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in retrans packets)\r\n var pre1stxxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 省内访问省外${overviewApp}的服务质量\r\n // TCP会话创建延迟(xxxService In2out TCP)\r\n var xxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out TCP)\r\n var pre1stxxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService In2out retrans packets)\r\n var xxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out retrans packets)\r\n var pre1stxxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${overviewApp}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${overviewApp}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${overviewApp}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${overviewApp}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${overviewApp}服务)\r\n var regionIn2outSentTrafficBytesTop10 = [\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${overviewApp}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIn2outReceivedTrafficBytesTop10 = [\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionAZReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionAZReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionAZReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${overviewApp}服务)\r\n var regionOut2inSentTrafficBytesTop10 = [\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${overviewApp}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionOut2inReceivedTrafficBytesTop10 = [\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1 ${overviewApp}服务省内访问省外\r\n var linkDirectionTrafficIn2Out = [\r\n <#if linkDirectionTrafficIn2Out??>\r\n <#list linkDirectionTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 各链路Top5指标流量占比\r\n // 上行链路总流量统计\r\n var linkEgressTrafficIn2Out = [\r\n <#if linkEgressTrafficIn2Out??>\r\n <#list linkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficIn2Out = [\r\n <#if pre1stLinkEgressTrafficIn2Out??>\r\n <#list pre1stLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficIn2Out = [\r\n <#if pre2ndLinkEgressTrafficIn2Out??>\r\n <#list pre2ndLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficIn2Out = [\r\n <#if linkIngressTrafficIn2Out??>\r\n <#list linkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficIn2Out = [\r\n <#if pre1stLinkIngressTrafficIn2Out??>\r\n <#list pre1stLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficIn2Out = [\r\n <#if pre2ndLinkIngressTrafficIn2Out??>\r\n <#list pre2ndLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 省外访问省内\r\n var linkDirectionTrafficOut2In = [\r\n <#if linkDirectionTrafficOut2In??>\r\n <#list linkDirectionTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n // 上行链路总流量统计\r\n // 各链路上行总流量-本周期\r\n var linkEgressTrafficOut2In = [\r\n <#if linkEgressTrafficOut2In??>\r\n <#list linkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficOut2In = [\r\n <#if pre1stLinkEgressTrafficOut2In??>\r\n <#list pre1stLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficOut2In = [\r\n <#if pre2ndLinkEgressTrafficOut2In??>\r\n <#list pre2ndLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficOut2In = [\r\n <#if linkIngressTrafficOut2In??>\r\n <#list linkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficOut2In = [\r\n <#if pre1stLinkIngressTrafficOut2In??>\r\n <#list pre1stLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficOut2In = [\r\n <#if pre2ndLinkIngressTrafficOut2In??>\r\n <#list pre2ndLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if linkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list linkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if linkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list linkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外douyin服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外douyin服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内douyin服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内douyin服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外douyin服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData4 = regionIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2outSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外douyin服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData10 = regionIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionAZReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内douyin服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData5 = regionOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内douyin服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData11 = regionOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n // 省内访问省外\r\n function initEcharts42 () {\r\n var Data42 = []\r\n var Links42 = []\r\n linkDirectionTrafficIn2Out.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data42.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links42 = linkDirectionTrafficIn2Out.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data42 = Array.from(new Set(Data42))\r\n Data42 = Data42.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas42\')\r\n sankeyOption.series[0].data = Data42\r\n sankeyOption.series[0].links = Links42\r\n myChart.setOption(sankeyOption)\r\n }\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts49 () {\r\n var province49 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province49, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXN, pre1stLinkEgressTrafficTopNProvinceIn2OutXN, pre2ndLinkEgressTrafficTopNProvinceIn2OutXN, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas49\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts50 () {\r\n var province50 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province50, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutTY, pre1stLinkEgressTrafficTopNProvinceIn2OutTY, pre2ndLinkEgressTrafficTopNProvinceIn2OutTY, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas50\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts51 () {\r\n var province51 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province51, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXA, pre1stLinkEgressTrafficTopNProvinceIn2OutXA, pre2ndLinkEgressTrafficTopNProvinceIn2OutXA, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas51\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts52 () {\r\n var province52 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province52, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXN, pre1stLinkIngressTrafficTopNProvinceIn2OutXN, pre2ndLinkIngressTrafficTopNProvinceIn2OutXN, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n\r\n var myChart = initEchartsInstance(\'canvas52\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts53 () {\r\n var province53 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province53, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutTY, pre1stLinkIngressTrafficTopNProvinceIn2OutTY, pre2ndLinkIngressTrafficTopNProvinceIn2OutTY, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas53\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts54 () {\r\n var province54 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province54, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXA, pre1stLinkIngressTrafficTopNProvinceIn2OutXA, pre2ndLinkIngressTrafficTopNProvinceIn2OutXA, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas54\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 省外访问省内\r\n function initEcharts55 () {\r\n var Data55 = []\r\n var Links55 = []\r\n linkDirectionTrafficOut2In.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data55.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links55 = linkDirectionTrafficOut2In.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data55 = Array.from(new Set(Data55))\r\n Data55 = Data55.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas55\')\r\n sankeyOption.series[0].data = Data55\r\n sankeyOption.series[0].links = Links55\r\n myChart.setOption(sankeyOption)\r\n }\r\n\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts62 () {\r\n var province62 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province62, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXN, pre1stLinkEgressTrafficTopNProvinceOut2InXN, pre2ndLinkEgressTrafficTopNProvinceOut2InXN, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas62\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts63 () {\r\n var province63 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province63, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InTY, pre1stLinkEgressTrafficTopNProvinceOut2InTY, pre2ndLinkEgressTrafficTopNProvinceOut2InTY, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas63\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts64 () {\r\n var province64 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province64, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXA, pre1stLinkEgressTrafficTopNProvinceOut2InXA, pre2ndLinkEgressTrafficTopNProvinceOut2InXA, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas64\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts65 () {\r\n var province65 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province65, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXN, pre1stLinkIngressTrafficTopNProvinceOut2InXN, pre2ndLinkIngressTrafficTopNProvinceOut2InXN, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas65\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts66 () {\r\n var province66 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province66, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InTY, pre1stLinkIngressTrafficTopNProvinceOut2InTY, pre2ndLinkIngressTrafficTopNProvinceOut2InTY, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas66\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts67 () {\r\n var province67 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province67, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXA, pre1stLinkIngressTrafficTopNProvinceOut2InXA, pre2ndLinkIngressTrafficTopNProvinceOut2InXA, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas67\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts42() } catch (e) { console.error(e) }\r\n try { initEcharts49() } catch (e) { console.error(e) }\r\n try { initEcharts50() } catch (e) { console.error(e) }\r\n try { initEcharts51() } catch (e) { console.error(e) }\r\n try { initEcharts52() } catch (e) { console.error(e) }\r\n try { initEcharts53() } catch (e) { console.error(e) }\r\n try { initEcharts54() } catch (e) { console.error(e) }\r\n try { initEcharts55() } catch (e) { console.error(e) }\r\n try { initEcharts62() } catch (e) { console.error(e) }\r\n try { initEcharts63() } catch (e) { console.error(e) }\r\n try { initEcharts64() } catch (e) { console.error(e) }\r\n try { initEcharts65() } catch (e) { console.error(e) }\r\n try { initEcharts66() } catch (e) { console.error(e) }\r\n try { initEcharts67() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>', '{\r\n \"queryParam\":[{\r\n \"key\":\"overviewApp\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.overviewApp\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app IN (\'${overviewApp}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (app IN (\'${overviewApp}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(received_bytes) AS ingress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(received_bytes) AS egress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) AND notEmpty(in_link_direction) GROUP BY out_link_direction, in_link_direction ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkDirectionTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(out_link_direction) GROUP BY out_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND notEmpty(in_link_direction) GROUP BY in_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT out_link_direction AS out_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND out_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY out_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"linkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stLinkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\": \"SELECT in_link_direction AS in_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) AND in_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY in_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndLinkIngressTrafficTopNProvinceOut2InXA\"\r\n }\r\n ]\r\n}', 1, '2022-10-18 23:00:27', 1, '2022-10-18 23:00:34', NULL); +INSERT INTO `report_category` VALUES (12, 'Application Report', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>Application Report-${overviewApp}</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">Application Report-${overviewApp}<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\"></div>\r\n</div>\r\n<div class=\"header2\">1.Network Summary</div>\r\n<div class=\"header3\">1.1 Traffic Summary</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">Table1 Traffic Statistics</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">Avg Data Rate</th>\r\n <th class=\"table__th\">Min Data Rate</th>\r\n <th class=\"table__th\" style=\"width: 200px\">Quantiles of Data Rate</th>\r\n <th class=\"table__th\">Max Data Rate</th>\r\n <th class=\"table__th\" style=\"width: 130px\">Change of Avg Data Rate</th>\r\n <th class=\"table__th\">Throughput</th>\r\n <th class=\"table__th\" style=\"width: 150px\">Percentage of Overall Throughput</th>\r\n <th class=\"table__th\" style=\"width: 130px\">Change of Throughput</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">Fig 1. Bandwidth Trend</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">1.2 Network Performance Summary</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">Table 2. Sessions from External to Internal</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">NPM Metric</th>\r\n <th class=\"table__th\">Quantiles</th>\r\n <th class=\"table__th\">Max Value</th>\r\n <th class=\"table__th\">Avg Value</th>\r\n <th class=\"table__th\">Change of Avg Value</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP Connection Establish Latency</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">Packet Retrans</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">Table 3. Sessions from Internal to External</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">NPM Metric</th>\r\n <th class=\"table__th\">Quantiles</th>\r\n <th class=\"table__th\">Max Value</th>\r\n <th class=\"table__th\">Avg Value</th>\r\n <th class=\"table__th\">Change of Avg Value</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP Connection Establish Latency</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">Packet Retrans</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">2. Top Services</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">Fig 2. Top Domains by Percentage of Throughput</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">Fig 3. Top Protocols by Percentage of Throughput</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">3. Geographical Distribution</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">Data Ratio by Region</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Max Value</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Avg Value</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">Fig 4. Top 10 Regions by Request Traffic from Internal to External</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">Data Ratio by Region</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Max Value</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Avg Value</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">Fig 5. Top 10 Regions by Response Traffic from Internal to External</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">Data Ratio by Region</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Max Value</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Avg Value</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">Fig 6. Top 10 Regions by Request Traffic from External to Internal</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">Data Ratio by Region</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Max Value</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">Avg Value</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">Fig 7. Top 10 Regions by Response Traffic from External to Internal</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n // xxx服务总流量 (xxxService traffic total)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前一周期(Pre 1st xxxService traffic total)\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期(Pre 2st xxxService traffic total)\r\n var pre2ndxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 省外访问省内服${overviewApp}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${overviewApp}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${overviewApp}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${overviewApp}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量情况\r\n // 省外访问省内${overviewApp}服务的服务质量\r\n // TCP会话创建延迟(xxxService Out2in TCP)\r\n var xxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in TCP)\r\n var pre1stxxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService Out2in Retrans packets)\r\n var xxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in Retrans packets)\r\n var pre1stxxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 省内访问省外${overviewApp}的服务质量\r\n // TCP会话创建延迟(xxxService In2out TCP)\r\n var xxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out TCP)\r\n var pre1stxxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService In2out Retrans packets)\r\n var xxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out Retrans packets)\r\n var pre1stxxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytes = [\r\n <#if top10RelatedDomainBytes??>\r\n <#list top10RelatedDomainBytes as d>\r\n {domain_sld:\"${getFromObj(d,\'domain_sld\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytes = [\r\n <#if top10RelatedProtocolBytes??>\r\n <#list top10RelatedProtocolBytes as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${overviewApp}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 省内访问省外${overviewApp}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // Top 10省份流量分布(省外访问省内${overviewApp}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 省外访问省内${overviewApp}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'Request Traffic\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'Period-over-Period Change\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'Request Traffic\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'Period-over-Period Change\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'Response Traffic\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'Period-over-Period Change\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'Response Traffic\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'Period-over-Period Change\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外字节跳动服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP10省份Response Traffic分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内字节跳动服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务TOP 10省份Response Traffic分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n myChart.setOption(option)\r\n }\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain_sld === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain_sld !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain_sld || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n\r\n\r\n\r\n</body></html>\r\n', '{\r\n \"queryParam\":[{\r\n \"key\":\"overviewApp\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.overviewApp\",\r\n \"labelType\":\"select\"\r\n }],\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT domain_sld AS domain_sld, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain_sld) AND (app IN (\'${overviewApp}\')) GROUP BY domain_sld ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain_sld, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain_sld) AND (app IN (\'${overviewApp}\')) GROUP BY domain_sld ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedDomainBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (app IN (\'${overviewApp}\')) GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"top10RelatedProtocolBytes\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time < ${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (app IN (\'${overviewApp}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} * 2 AND recv_time <${endTime} - ${timeDiff} * 2 AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (app IN (\'${overviewApp}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (app IN (\'${overviewApp}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}', 1, '2022-12-30 18:06:26', 1, '2022-12-30 18:06:32', NULL); +INSERT INTO `report_category` VALUES (13, 'IDC域名报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IDC 域名${domain}报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IDC 域名${domain}报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 IDC ${domain}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 域外访问域内${domain}的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 域内访问域外的${domain}的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图2 IDC访问各省份${domain}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图3 IDC访问各省份${domain}的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 各省份访问IDC ${domain}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 各省份访问IDC ${domain}的Top 10 省份响应流量分布 </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 IDC访问省内${domain}的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 IDC访问省内${domain}的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 省内访问IDC ${domain}的Top 10 省内地区请求流量分布 </div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 省内访问IDC ${domain}的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n\r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n //前一周期\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期\r\n var pre2ndxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n\r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问IDC 应用服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n\r\n // 省外访问省内服${domain}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${domain}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${domain}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${domain}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 域外访问域内${domain}服务的服务质量\r\n //TCP会话创建延迟(xxxService Out2in TCP)\r\n var xxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in TCP)\r\n var pre1stxxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService Out2in loss packets)\r\n var xxxServiceOut2inPacketRetrans = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in loss packets)\r\n var pre1stxxxServiceOut2inPacketRetrans = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'establish_latency_min\')}\r\n }\r\n // 域内访问域外${domain}的服务质量\r\n //TCP会话创建延迟(xxxService In2out TCP)\r\n var xxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out TCP)\r\n var pre1stxxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService In2out loss packets)\r\n var xxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out loss packets)\r\n var pre1stxxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${domain}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${domain}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${domain}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${domain}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${domain}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${domain}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${domain}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${domain}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外${domain}服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${domain}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内${domain}服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${domain}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外${domain}服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${domain}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内${domain}服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${domain}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"domain\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.domain\",\r\n \"labelType\":\"input\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"trafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\'))\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_admin_area IN (\'IDC\') AND server_admin_area NOT IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area NOT IN (\'IDC\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_admin_area NOT IN (\'IDC\') AND server_admin_area IN (\'IDC\') AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_admin_area IN (\'IDC\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\') AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\": \"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_admin_area IN (\'IDC\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\') AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\": \"table\",\r\n \"valueAlias\": \"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}\r\n', 1, '2023-03-06 16:30:54', 1, '2023-03-06 16:30:59', NULL); +INSERT INTO `report_category` VALUES (14, 'IDC IP流量报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IP ${ip}流量报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IP (${ip})流量报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 ${ip}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 ${ip}为服务端的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 ${ip}为客户端的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"header3\">1.承载业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n<div class=\"header3\">2.访问业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas14\"></div>\r\n <div class=\"echarts__title\">图4 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas19\"></div>\r\n <div class=\"echarts__title\">图5 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问${ip}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问${ip}的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 ${ip}访问各省份的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 ${ip}访问各省份的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问${ip}的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问${ip}的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 ${ip}访问省内的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图13 ${ip}访问省内的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n\r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问IDC 应用服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n\r\n // 省外访问省内服${ip}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${ip}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${ip}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${ip}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytesAsServer = [\r\n <#if top10RelatedDomainBytesAsServer??>\r\n <#list top10RelatedDomainBytesAsServer as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n var top10RelatedDomainBytesAsClient = [\r\n <#if top10RelatedDomainBytesAsClient??>\r\n <#list top10RelatedDomainBytesAsClient as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytesAsServer = [\r\n <#if top10RelatedProtocolBytesAsServer??>\r\n <#list top10RelatedProtocolBytesAsServer as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n var top10RelatedProtocolBytesAsClient = [\r\n <#if top10RelatedProtocolBytesAsClient??>\r\n <#list top10RelatedProtocolBytesAsClient as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${ip}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ip}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${ip}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ip}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${ip}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ip}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${ip}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ip}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外字节跳动服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内字节跳动服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外字节跳动服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内字节跳动服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytesAsServer.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytesAsServer.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts14 () {\r\n var total14 = top10RelatedDomainBytesAsClient.find(b => b.domain === \'total\')\r\n if (total14) {\r\n var pieDomainData14 = []\r\n var businessDistributionDomainData14 = top10RelatedDomainBytesAsClient.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData14 = businessDistributionDomainData14.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total14.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData14.push({ name: \'other\', value: (total14.bytes - bytesAll) / total14.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData14\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytesAsServer.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytesAsServer.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n function initEcharts19 () {\r\n var total19 = top10RelatedProtocolBytesAsClient.find(b => b.l7_protocol === \'total\')\r\n if (total19) {\r\n var pieDomainData19 = []\r\n var businessDistributionDomainData19 = top10RelatedProtocolBytesAsClient.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData19 = businessDistributionDomainData19.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total19.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData19.push({ name: \'other\', value: (total19.bytes - bytesAll) / total19.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData19\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"queryParam\":[{\r\n \"key\":\"ip\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.ip\",\r\n \"labelType\":\"input\"\r\n }],\r\n \"dataset\":[\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcpAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcpAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetransAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetransAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcpAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcpAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetransAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetransAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (server_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (server_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (server_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (server_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (client_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (client_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (client_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (client_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}', 1, '2023-03-09 09:37:46', 1, '2023-03-09 09:37:49', NULL); +INSERT INTO `report_category` VALUES (15, '出入口域名报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>出入口域名${domain}报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">出入口域名${domain}报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 出入口${domain}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 省外访问省内${domain}的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 省内访问省外的${domain}的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图2 省内访问省外${domain}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图3 省内访问省外${domain}的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图4 省外访问省内${domain}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图5 省外访问省内${domain}的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 省内访问省外${domain}的Top 10 省内地区的请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 省内访问省外${domain}的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 省外访问省内${domain}的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 省外访问省内${domain}的Top 10 省内地区的响应流量分布</div>\r\n</div>\r\n<div class=\"header2\">三.链路方向流量构成</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas42\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图10 省内访问省外${domain}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas49\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas50\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas51\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas52\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas53\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas54\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange9\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange20\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange20\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图11 省内访问省外${domain}各链路Top5 省份流量占比</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__sankey\" id=\"canvas55\"></div>\r\n </div>\r\n</div>\r\n<div class=\"echarts__title\">图12 省外访问省内${domain}会话的流量流向图</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table table-contain-echarts\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th></th>\r\n <th class=\"table__th\">西宁</th>\r\n <th class=\"table__th\">太原</th>\r\n <th class=\"table__th\">西安</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-up\">上行链路</td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas62\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas63\" ></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__td-bar\" id=\"canvas64\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td table__td-down\">下行链路</td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas65\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas \" id=\"canvas66\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td echarts__td-bar\">\r\n <div class=\"echarts-box\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas\" id=\"canvas67\"></div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"echarts__legends\">\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block light-green\"></span>\r\n <span class=\"legend-text\" id=\"statisticsRange11\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block green\"></span>\r\n <span class=\"legend-text\" id=\"prevRange22\"></span>\r\n </span>\r\n <span class=\"echarts__legend\">\r\n <span class=\"color-block blue\"></span>\r\n <span class=\"legend-text\" id=\"currentRange22\"></span>\r\n </span>\r\n</div>\r\n<div class=\"echarts__title\">图13 省外访问省内${domain}各链路Top5 省份流量占比</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n // xxx服务总流量 (xxxService traffic total)\r\n var xxxServiceTrafficTotal = ${jsGetNumFromArr(xxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前一周期(Pre 1st xxxService traffic total)\r\n var pre1stxxxServiceTrafficTotal = ${jsGetNumFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 前二周期(Pre 2st xxxService traffic total)\r\n var pre2ndxxxServiceTrafficTotal = ${jsGetNumFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\')/1024}\r\n // 省外访问省内服${domain}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${domain}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${domain}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${domain}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量情况\r\n // 省外访问省内${domain}服务的服务质量\r\n // TCP会话创建延迟(xxxService Out2in TCP)\r\n var xxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in TCP)\r\n var pre1stxxxServiceOut2inTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService Out2in loss packets)\r\n var xxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'establish_latency_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService Out2in loss packets)\r\n var pre1stxxxServiceOut2inPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 省内访问省外${domain}的服务质量\r\n // TCP会话创建延迟(xxxService In2out TCP)\r\n var xxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(xxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out TCP)\r\n var pre1stxxxServiceIn2outTcp = {\r\n establish_latency_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p50\')},\r\n establish_latency_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p90\')},\r\n establish_latency_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_p99\')},\r\n establish_latency_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_avg\')},\r\n establish_latency_max:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_max\')},\r\n establish_latency_min:${jsGetNumFromArr(pre1stxxxServiceIn2outTcp,0,\'establish_latency_min\')}\r\n }\r\n // 丢包率(xxxService In2out loss packets)\r\n var xxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(xxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n // 上周期(Pre 1st xxxService In2out loss packets)\r\n var pre1stxxxServiceIn2outPacketRetrans = {\r\n pkt_retrans_percent_p50: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p50\')},\r\n pkt_retrans_percent_p90: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p90\')},\r\n pkt_retrans_percent_p99: ${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_p99\')},\r\n pkt_retrans_percent_avg:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_avg\')},\r\n pkt_retrans_percent_max:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_max\')},\r\n pkt_retrans_percent_min:${jsGetNumFromArr(pre1stxxxServiceIn2outPacketRetrans,0,\'pkt_retrans_percent_min\')}\r\n }\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${domain}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${domain}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${domain}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${domain}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${domain}服务)\r\n var regionIn2outSentTrafficBytesTop10 = [\r\n <#if regionIn2outSentTrafficBytesTop10??>\r\n <#list regionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${domain}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIn2outReceivedTrafficBytesTop10 = [\r\n <#if regionIn2outReceivedTrafficBytesTop10??>\r\n <#list regionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionAZReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionAZReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionAZReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2outReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${domain}服务)\r\n var regionOut2inSentTrafficBytesTop10 = [\r\n <#if regionOut2inSentTrafficBytesTop10??>\r\n <#list regionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${domain}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionOut2inReceivedTrafficBytesTop10 = [\r\n <#if regionOut2inReceivedTrafficBytesTop10??>\r\n <#list regionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionOut2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.1 ${domain}服务省内访问省外\r\n var linkDirectionTrafficIn2Out = [\r\n <#if linkDirectionTrafficIn2Out??>\r\n <#list linkDirectionTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 各链路Top5指标流量占比\r\n // 上行链路总流量统计\r\n var linkEgressTrafficIn2Out = [\r\n <#if linkEgressTrafficIn2Out??>\r\n <#list linkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficIn2Out = [\r\n <#if pre1stLinkEgressTrafficIn2Out??>\r\n <#list pre1stLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficIn2Out = [\r\n <#if pre2ndLinkEgressTrafficIn2Out??>\r\n <#list pre2ndLinkEgressTrafficIn2Out as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficIn2Out = [\r\n <#if linkIngressTrafficIn2Out??>\r\n <#list linkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficIn2Out = [\r\n <#if pre1stLinkIngressTrafficIn2Out??>\r\n <#list pre1stLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficIn2Out = [\r\n <#if pre2ndLinkIngressTrafficIn2Out??>\r\n <#list pre2ndLinkIngressTrafficIn2Out as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 2.1.6 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if linkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list linkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceIn2OutXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceIn2OutXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceIn2OutXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 4.2 省外访问省内\r\n var linkDirectionTrafficOut2In = [\r\n <#if linkDirectionTrafficOut2In??>\r\n <#list linkDirectionTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n bytes:${jsGetNumFromObj(d,\'bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n // 上行链路总流量统计\r\n // 各链路上行总流量-本周期\r\n var linkEgressTrafficOut2In = [\r\n <#if linkEgressTrafficOut2In??>\r\n <#list linkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上周期\r\n var pre1stLinkEgressTrafficOut2In = [\r\n <#if pre1stLinkEgressTrafficOut2In??>\r\n <#list pre1stLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路上行总流量-上上周期\r\n var pre2ndLinkEgressTrafficOut2In = [\r\n <#if pre2ndLinkEgressTrafficOut2In??>\r\n <#list pre2ndLinkEgressTrafficOut2In as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路总流量统计\r\n // 各链路下行总流量-本周期\r\n var linkIngressTrafficOut2In = [\r\n <#if linkIngressTrafficOut2In??>\r\n <#list linkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上周期\r\n var pre1stLinkIngressTrafficOut2In = [\r\n <#if pre1stLinkIngressTrafficOut2In??>\r\n <#list pre1stLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 各链路下行总流量-上上周期\r\n var pre2ndLinkIngressTrafficOut2In = [\r\n <#if pre2ndLinkIngressTrafficOut2In??>\r\n <#list pre2ndLinkIngressTrafficOut2In as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西宁链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXN = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXN??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXN as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 太原链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if linkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list linkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if linkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list linkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InTY = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InTY??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InTY as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 西安链路TopN 省份统计\r\n // 上行链路TopN Province-本周期\r\n var linkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if linkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list linkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上周期\r\n var pre1stLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 上行链路TopNProvince-上上周期\r\n var pre2ndLinkEgressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkEgressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkEgressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n egress_link_direction:\"${getFromObj(d,\'egress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n egress_bytes:${jsGetNumFromObj(d,\'egress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopN Province-本周期\r\n var linkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if linkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list linkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上周期\r\n var pre1stLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre1stLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre1stLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 下行链路TopNProvince-上上周期\r\n var pre2ndLinkIngressTrafficTopNProvinceOut2InXA = [\r\n <#if pre2ndLinkIngressTrafficTopNProvinceOut2InXA??>\r\n <#list pre2ndLinkIngressTrafficTopNProvinceOut2InXA as d>\r\n {\r\n ingress_link_direction:\"${getFromObj(d,\'ingress_link_direction\',\'string\')}\",\r\n client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",\r\n ingress_bytes:${jsGetNumFromObj(d,\'ingress_bytes\')/1024},\r\n sessions:${jsGetNumFromObj(d,\'sessions\')}\r\n },\r\n </#list>\r\n </#if>\r\n ]\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外baidu.com服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外baidu.com服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内baidu.com服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内baidu.com服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外baidu.com服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData4 = regionIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2outSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外baidu.com服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData10 = regionIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionAZReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2outReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内baidu.com服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData5 = regionOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内baidu.com服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData11 = regionOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionOut2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionOut2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytes.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytes.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytes.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytes.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n // 省内访问省外\r\n function initEcharts42 () {\r\n var Data42 = []\r\n var Links42 = []\r\n linkDirectionTrafficIn2Out.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data42.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links42 = linkDirectionTrafficIn2Out.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data42 = Array.from(new Set(Data42))\r\n Data42 = Data42.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas42\')\r\n sankeyOption.series[0].data = Data42\r\n sankeyOption.series[0].links = Links42\r\n myChart.setOption(sankeyOption)\r\n }\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts49 () {\r\n var province49 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province49, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXN, pre1stLinkEgressTrafficTopNProvinceIn2OutXN, pre2ndLinkEgressTrafficTopNProvinceIn2OutXN, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas49\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts50 () {\r\n var province50 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province50, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutTY, pre1stLinkEgressTrafficTopNProvinceIn2OutTY, pre2ndLinkEgressTrafficTopNProvinceIn2OutTY, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas50\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts51 () {\r\n var province51 = linkEgressTrafficIn2Out.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province51, pre1stLinkEgressTrafficIn2Out, pre2ndLinkEgressTrafficIn2Out, linkEgressTrafficTopNProvinceIn2OutXA, pre1stLinkEgressTrafficTopNProvinceIn2OutXA, pre2ndLinkEgressTrafficTopNProvinceIn2OutXA, \'egress_link_direction\', \'server_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas51\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts52 () {\r\n var province52 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province52, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXN, pre1stLinkIngressTrafficTopNProvinceIn2OutXN, pre2ndLinkIngressTrafficTopNProvinceIn2OutXN, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n\r\n var myChart = initEchartsInstance(\'canvas52\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts53 () {\r\n var province53 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province53, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutTY, pre1stLinkIngressTrafficTopNProvinceIn2OutTY, pre2ndLinkIngressTrafficTopNProvinceIn2OutTY, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas53\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts54 () {\r\n var province54 = linkIngressTrafficIn2Out.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province54, pre1stLinkIngressTrafficIn2Out, pre2ndLinkIngressTrafficIn2Out, linkIngressTrafficTopNProvinceIn2OutXA, pre1stLinkIngressTrafficTopNProvinceIn2OutXA, pre2ndLinkIngressTrafficTopNProvinceIn2OutXA, \'ingress_link_direction\', \'server_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas54\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 省外访问省内\r\n function initEcharts55 () {\r\n var Data55 = []\r\n var Links55 = []\r\n linkDirectionTrafficOut2In.forEach(b => {\r\n if (b.egress_link_direction) {\r\n b.egress_link_direction = \'上行\' + b.egress_link_direction\r\n }\r\n if (b.ingress_link_direction) {\r\n b.ingress_link_direction = \'下行\' + b.ingress_link_direction\r\n }\r\n Data55.push(b.egress_link_direction, b.ingress_link_direction)\r\n })\r\n Links55 = linkDirectionTrafficOut2In.map((d, i) => {\r\n return {\r\n source: d.egress_link_direction,\r\n target: d.ingress_link_direction,\r\n value: d.bytes\r\n }\r\n })\r\n Data55 = Array.from(new Set(Data55))\r\n Data55 = Data55.map((d, i) => {\r\n return {\r\n name: d,\r\n itemStyle: {\r\n color: directionChartColor[i],\r\n borderColor: directionChartColor[i]\r\n }\r\n }\r\n })\r\n var myChart = initEchartsInstance(\'canvas55\')\r\n sankeyOption.series[0].data = Data55\r\n sankeyOption.series[0].links = Links55\r\n myChart.setOption(sankeyOption)\r\n }\r\n\r\n // 上行链路 TOP5省份流量占比\r\n function initEcharts62 () {\r\n var province62 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province62, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXN, pre1stLinkEgressTrafficTopNProvinceOut2InXN, pre2ndLinkEgressTrafficTopNProvinceOut2InXN, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas62\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts63 () {\r\n var province63 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province63, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InTY, pre1stLinkEgressTrafficTopNProvinceOut2InTY, pre2ndLinkEgressTrafficTopNProvinceOut2InTY, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas63\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts64 () {\r\n var province64 = linkEgressTrafficOut2In.find(t => t.egress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province64, pre1stLinkEgressTrafficOut2In, pre2ndLinkEgressTrafficOut2In, linkEgressTrafficTopNProvinceOut2InXA, pre1stLinkEgressTrafficTopNProvinceOut2InXA, pre2ndLinkEgressTrafficTopNProvinceOut2InXA, \'egress_link_direction\', \'client_super_admin_area\', \'egress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas64\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n // 下行链路 TOP5省份流量占比\r\n function initEcharts65 () {\r\n var province65 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西宁\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province65, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXN, pre1stLinkIngressTrafficTopNProvinceOut2InXN, pre2ndLinkIngressTrafficTopNProvinceOut2InXN, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas65\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts66 () {\r\n var province66 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'太原\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province66, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InTY, pre1stLinkIngressTrafficTopNProvinceOut2InTY, pre2ndLinkIngressTrafficTopNProvinceOut2InTY, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas66\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n function initEcharts67 () {\r\n var province67 = linkIngressTrafficOut2In.find(t => t.ingress_link_direction === \'西安\')\r\n var { seriesData, prevSeriesData, pprevSeriesData, categoryData } = barDataFormatHandling(province67, pre1stLinkIngressTrafficOut2In, pre2ndLinkIngressTrafficOut2In, linkIngressTrafficTopNProvinceOut2InXA, pre1stLinkIngressTrafficTopNProvinceOut2InXA, pre2ndLinkIngressTrafficTopNProvinceOut2InXA, \'ingress_link_direction\', \'client_super_admin_area\', \'ingress_bytes\')\r\n var myChart = initEchartsInstance(\'canvas67\')\r\n barOption.xAxis.data = categoryData\r\n barOption.series[2].data = seriesData\r\n barOption.series[1].data = prevSeriesData\r\n barOption.series[0].data = pprevSeriesData\r\n myChart.setOption(barOption)\r\n }\r\n\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts42() } catch (e) { console.error(e) }\r\n try { initEcharts49() } catch (e) { console.error(e) }\r\n try { initEcharts50() } catch (e) { console.error(e) }\r\n try { initEcharts51() } catch (e) { console.error(e) }\r\n try { initEcharts52() } catch (e) { console.error(e) }\r\n try { initEcharts53() } catch (e) { console.error(e) }\r\n try { initEcharts54() } catch (e) { console.error(e) }\r\n try { initEcharts55() } catch (e) { console.error(e) }\r\n try { initEcharts62() } catch (e) { console.error(e) }\r\n try { initEcharts63() } catch (e) { console.error(e) }\r\n try { initEcharts64() } catch (e) { console.error(e) }\r\n try { initEcharts65() } catch (e) { console.error(e) }\r\n try { initEcharts66() } catch (e) { console.error(e) }\r\n try { initEcharts67() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n</html>', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"domain\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.domain\",\r\n \"labelType\":\"input\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'internal\' AND server_zone = \'external\' AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'internal\' AND client_zone = \'external\' AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionAZReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND server_zone = \'external\' AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_zone = \'external\' AND client_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (domain = (\'${domain}\')) AND client_zone = \'external\' AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, ingress_link_direction AS ingress_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(received_bytes) AS ingress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) AND notEmpty(ingress_link_direction) GROUP BY egress_link_direction, ingress_link_direction ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkDirectionTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficIn2Out\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceIn2OutXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceIn2OutTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, server_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') AND server_super_admin_area IN ( SELECT server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND client_zone = \'internal\' AND server_zone = \'external\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, server_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceIn2OutXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, ingress_link_direction AS ingress_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(received_bytes) AS egress_bytes, SUM(sent_bytes + received_bytes) AS bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) AND notEmpty(ingress_link_direction) GROUP BY egress_link_direction, ingress_link_direction ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkDirectionTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(egress_link_direction) GROUP BY egress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND notEmpty(ingress_link_direction) GROUP BY ingress_link_direction ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 3\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficOut2In\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西宁\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceOut2InXN\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'太原\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceOut2InTY\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT egress_link_direction AS egress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS egress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND egress_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 5 ) GROUP BY egress_link_direction, client_super_admin_area ORDER BY egress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkEgressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"linkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stLinkIngressTrafficTopNProvinceOut2InXA\"\r\n },\r\n {\r\n \"querySql\":\"SELECT ingress_link_direction AS ingress_link_direction, client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS ingress_bytes, SUM(sessions) AS sessions FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') AND client_super_admin_area IN ( SELECT client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND client_zone = \'external\' AND server_zone = \'internal\' AND (domain = (\'${domain}\')) AND ingress_link_direction IN (\'西安\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 5 ) GROUP BY ingress_link_direction, client_super_admin_area ORDER BY ingress_bytes DESC LIMIT 5\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndLinkIngressTrafficTopNProvinceOut2InXA\"\r\n }\r\n ]\r\n}', 1, '2023-03-08 15:16:57', 1, '2023-03-08 15:17:00', NULL); +INSERT INTO `report_category` VALUES (19, '出入口IP流量报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IP ${ip}流量报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IP (${ip})流量报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 ${ip}整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 ${ip}为服务端的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcpAsServer,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetransAsServer,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表3 ${ip}为客户端的服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcpAsClient,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetransAsClient,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"header3\">1.承载业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n<div class=\"header3\">2.访问业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas14\"></div>\r\n <div class=\"echarts__title\">图4 相关域名流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas19\"></div>\r\n <div class=\"echarts__title\">图5 应用层协议流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问${ip}的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问${ip}的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 ${ip}访问各省份的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 ${ip}访问各省份的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问${ip}的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问${ip}的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 ${ip}访问省内的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图13 ${ip}访问省内的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n\r\n // IDC访问省内应用服务流量(xxxServiceIdc2intraffictotal)\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问IDC 应用服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n\r\n // 省外访问省内服${ip}的服务质量\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${ip}服务流量\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // ${ip}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${ip}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 2 业务分部 */\r\n // 相关Domain流量占比\r\n var top10RelatedDomainBytesAsServer = [\r\n <#if top10RelatedDomainBytesAsServer??>\r\n <#list top10RelatedDomainBytesAsServer as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n var top10RelatedDomainBytesAsClient = [\r\n <#if top10RelatedDomainBytesAsClient??>\r\n <#list top10RelatedDomainBytesAsClient as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 应用层协议占比\r\n var top10RelatedProtocolBytesAsServer = [\r\n <#if top10RelatedProtocolBytesAsServer??>\r\n <#list top10RelatedProtocolBytesAsServer as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n var top10RelatedProtocolBytesAsClient = [\r\n <#if top10RelatedProtocolBytesAsClient??>\r\n <#list top10RelatedProtocolBytesAsClient as d>\r\n {l7_protocol:\"${getFromObj(d,\'l7_protocol\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${ip}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ip}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${ip}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ip}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${ip}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ip}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${ip}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ip}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外字节跳动服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内字节跳动服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外字节跳动服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外字节跳动服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内字节跳动服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内字节跳动服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = top10RelatedDomainBytesAsServer.find(b => b.domain === \'total\')\r\n if (total13) {\r\n var pieDomainData13 = []\r\n var businessDistributionDomainData13 = top10RelatedDomainBytesAsServer.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData13 = businessDistributionDomainData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts14 () {\r\n var total14 = top10RelatedDomainBytesAsClient.find(b => b.domain === \'total\')\r\n if (total14) {\r\n var pieDomainData14 = []\r\n var businessDistributionDomainData14 = top10RelatedDomainBytesAsClient.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData14 = businessDistributionDomainData14.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total14.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData14.push({ name: \'other\', value: (total14.bytes - bytesAll) / total14.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData14\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = top10RelatedProtocolBytesAsServer.find(b => b.l7_protocol === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = top10RelatedProtocolBytesAsServer.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n function initEcharts19 () {\r\n var total19 = top10RelatedProtocolBytesAsClient.find(b => b.l7_protocol === \'total\')\r\n if (total19) {\r\n var pieDomainData19 = []\r\n var businessDistributionDomainData19 = top10RelatedProtocolBytesAsClient.filter(t => t.l7_protocol !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData19 = businessDistributionDomainData19.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total19.bytes,\r\n name: t.l7_protocol || \'null\'\r\n }\r\n })\r\n pieDomainData19.push({ name: \'other\', value: (total19.bytes - bytesAll) / total19.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData19\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"queryParam\":[{\r\n \"key\":\"ip\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.ip\",\r\n \"labelType\":\"input\"\r\n }],\r\n \"dataset\":[\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\')\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ((client_ip = \'${ip}\' or server_ip = \'${ip}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcpAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcpAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetransAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (server_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetransAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcpAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcpAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetransAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (client_ip = \'${ip}\') GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetransAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (server_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (server_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (server_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (server_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (client_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (client_ip = \'${ip}\') GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedDomainBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT l7_protocol AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (client_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS l7_protocol, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(l7_protocol) AND (client_ip = \'${ip}\') GROUP BY l7_protocol ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"top10RelatedProtocolBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (server_ip = \'${ip}\') GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (client_ip = \'${ip}\') GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (server_ip = \'${ip}\') AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (server_ip = \'${ip}\') GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (client_ip = \'${ip}\') AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (client_ip = \'${ip}\') GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}', 1, '2023-03-09 10:34:55', 1, '2023-03-09 10:34:59', NULL); +INSERT INTO `report_category` VALUES (20, 'IDC IP标签报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IP标签(${ipTag})报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IP标签(${ipTag})报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>IDC链路共计10条,总带宽1Tbps(10*100Gbps);系统实际接入链路10条,接入带宽1Tbps(10*100Gbps)。实际接入带宽为总带宽的100%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 ${ipTag}IP整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 整体服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table__title\">表3 Top10 APP 服务质量</div>\r\n<table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th rowspan=\"2\" class=\"table__th\">APP</th>\r\n <th rowspan=\"2\" class=\"table__th\">流量占比</th>\r\n <th colspan=\"3\" class=\"table__th\">TCP会话延迟(ms)</th>\r\n <th colspan=\"3\" class=\"table__th\">重传率</th>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <#if xxxIPTagsTop10AppBytes??>\r\n <#list xxxIPTagsTop10AppBytes as val>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">${getFromObj(val,\'app_company\',\'string\')}</td>\r\n <td class=\"table__td\">${proportion(getFromObj(val,\'bytes\',\'number\'),getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'))}</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, pre1stxxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, pre1stxxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </#list>\r\n </#if>\r\n </tbody>\r\n</table>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"header3\">1.承载业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 APP流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 域名流量占比</div>\r\n </span>\r\n</div>\r\n<div class=\"header3\">2.访问业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas14\"></div>\r\n <div class=\"echarts__title\">图4 APP流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas19\"></div>\r\n <div class=\"echarts__title\">图5 域名流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问${ipTag}IP的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问${ipTag}IP的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 ${ipTag}IP访问各省份的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 ${ipTag}IP访问各省份的Top 10 省份响应流量分布 </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问${ipTag}IP的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问${ipTag}IP的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 ${ipTag}IP访问省内的Top 10 省内地区请求流量分布 </div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图13 ${ipTag}IP访问省内的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n\r\n // 省外访问省内服字节跳动的服务质量(xxxServiceOut2inTrafficTotal)\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外字节跳动服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n\r\n // 省外访问省内服${ipTag}的服务质量\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${ipTag}服务流量\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // ${ipTag}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${ipTag}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量概况\r\n // 1.2.1\r\n var appCompanyTrafficTop10 = [\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2.2 Top 10 App服务质量\r\n // Top 10 App服务质量 TCP会话创建延迟\r\n var xxxIPTagsTop10AppTCP = {\r\n <#if xxxIPTagsTop10AppTCP??>\r\n <#list xxxIPTagsTop10AppTCP as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.2 前一周期Top10 App Company TCP会话创建延迟\r\n var pre1stxxxIPTagsTop10AppTCP = {\r\n <#if pre1stxxxIPTagsTop10AppTCP??>\r\n <#list pre1stxxxIPTagsTop10AppTCP as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.3 重传率\r\n var xxxIPTagsTop10AppPacketRetrans = {\r\n <#if xxxIPTagsTop10AppPacketRetrans??>\r\n <#list xxxIPTagsTop10AppPacketRetrans as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.4 前一周期重传率\r\n var pre1stxxxIPTagsTop10AppPacketRetrans = {\r\n <#if pre1stxxxIPTagsTop10AppPacketRetrans??>\r\n <#list pre1stxxxIPTagsTop10AppPacketRetrans as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n /* 2 业务分布 */\r\n var xxxIPTagsTop10AppBytes = [\r\n <#if xxxIPTagsTop10AppBytes??>\r\n <#list xxxIPTagsTop10AppBytes as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 承载业务分布\r\n // APP流量占比\r\n var Top10RelatedAppBytesAsServer = [\r\n <#if Top10RelatedAppBytesAsServer??>\r\n <#list Top10RelatedAppBytesAsServer as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 域名流量占比\r\n var Top10RelatedDomainBytesAsServer = [\r\n <#if Top10RelatedDomainBytesAsServer??>\r\n <#list Top10RelatedDomainBytesAsServer as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 访问业务分布\r\n // APP流量占比\r\n var Top10RelatedAppBytesAsClient = [\r\n <#if Top10RelatedAppBytesAsClient??>\r\n <#list Top10RelatedAppBytesAsClient as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 域名流量占比\r\n var Top10RelatedDomainBytesAsClient = [\r\n <#if Top10RelatedDomainBytesAsClient??>\r\n <#list Top10RelatedDomainBytesAsClient as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${ipTag}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ipTag}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${ipTag}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ipTag}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${ipTag}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ipTag}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${ipTag}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ipTag}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外${ipTag}服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${ipTag}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内${ipTag}服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${ipTag}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外${ipTag}服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${ipTag}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内${ipTag}服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${ipTag}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = Top10RelatedAppBytesAsServer.find(b => b.app_company === \'total\')\r\n if (total13) {\r\n var pieAppData13 = []\r\n var businessDistributionAppData13 = Top10RelatedAppBytesAsServer.filter(t => t.app_company !== \'total\')\r\n var bytesAll = 0\r\n pieAppData13 = businessDistributionAppData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieAppData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieAppData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = Top10RelatedDomainBytesAsServer.find(b => b.domain === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = Top10RelatedDomainBytesAsServer.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n function initEcharts14 () {\r\n var total14 = Top10RelatedAppBytesAsClient.find(b => b.app_company === \'total\')\r\n if (total14) {\r\n var pieAppData14 = []\r\n var businessDistributionAppData14 = Top10RelatedAppBytesAsClient.filter(t => t.app_company !== \'total\')\r\n var bytesAll = 0\r\n pieAppData14 = businessDistributionAppData14.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total14.bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieAppData14.push({ name: \'other\', value: (total14.bytes - bytesAll) / total14.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieAppData14\r\n myChart.setOption(option)\r\n }\r\n function initEcharts19 () {\r\n var total19 = Top10RelatedDomainBytesAsClient.find(b => b.domain === \'total\')\r\n if (total19) {\r\n var pieDomainData19 = []\r\n var businessDistributionDomainData19 = Top10RelatedDomainBytesAsClient.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData19 = businessDistributionDomainData19.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total19.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData19.push({ name: \'other\', value: (total19.bytes - bytesAll) / total19.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData19\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"ipTag\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.ipTag\",\r\n \"labelType\": \"input\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company as app_company, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(establish_latency,0.5), 4) AS establish_latency_p50, ROUND(QUANTILE(establish_latency,0.9), 4) AS establish_latency_p90, ROUND(QUANTILE(establish_latency,0.99), 4) AS establish_latency_p99, ROUND(AVG(establish_latency), 4) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppTCP\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(establish_latency,0.5), 4) AS establish_latency_p50, ROUND(QUANTILE(establish_latency,0.9), 4) AS establish_latency_p90, ROUND(QUANTILE(establish_latency,0.99), 4) AS establish_latency_p99, ROUND(AVG(establish_latency), 4) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxIPTagsTop10AppTCP\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(pkt_retrans_percent,0.5), 4) as pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent,0.9), 4) as pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent,0.99), 4) as pkt_retrans_percent_p99, ROUND(AVG(pkt_retrans_percent), 4) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(pkt_retrans_percent,0.5), 4) as pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent,0.9), 4) as pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent,0.99), 4) as pkt_retrans_percent_p99, ROUND(AVG(pkt_retrans_percent), 4) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxIPTagsTop10AppPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedAppBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedDomainBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedAppBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedDomainBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}', 1, '2023-03-08 17:58:11', 1, '2023-03-08 17:58:15', NULL); +INSERT INTO `report_category` VALUES (21, '出入口 IP标签报告', '<!DOCTYPE html>\r\n<html lang=\"en\"><head>\r\n <meta charset=\"UTF-8\">\r\n <#setting number_format=\"0.####\"/>\r\n <title>IP标签(${ipTag})报告</title>\r\n <script src=\"http://${uiStaticUrl}/assets/echarts.min.js\"></script>\r\n <style>${reportStyleCommon}</style>\r\n</head>\r\n<body>\r\n<div class=\"header1\">IP标签(${ipTag})报告<span class=\"header1__time\" id=\"currentRange0\"></span></div>\r\n<div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量接入情况说明:</div>出入口链路共计34条,总带宽2.68Tbps(26*100Gbps、8*10Gbps); 系统实际接入链路2条,接入带宽200Gbps(2*100Gbps)。实际接入带宽为总带宽的7.46%。\r\n</div>\r\n<div class=\"header2\">一.整体流量概况</div>\r\n<div class=\"header3\">1.流量规模概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表1 ${ipTag}IP整体流量概况</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">速率均值</th>\r\n <th class=\"table__th\">速率谷值</th>\r\n <th class=\"table__th\">速率分位值</th>\r\n <th class=\"table__th\">速率峰值</th>\r\n <th class=\"table__th\">速率均值环比</th>\r\n <th class=\"table__th\">总流量</th>\r\n <th class=\"table__th\">总流量占比</th>\r\n <th class=\"table__th\">总流量环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_min\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate50\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate90\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate99\',\'number\'),\'bps\',1000)}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceRate,0,\'rate_max\',\'number\'),\'bps\',1000)}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceRate,0,\'rate_avg\',\'number\'),getFromArr(pre2ndxxxServiceRate,0,\'rate_avg\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertNumber(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),\'byte\',1024)}\r\n </td>\r\n <td class=\"table__td\">\r\n ${proportion(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(trafficTotal,0,\'bytes\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>本期vs上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label quantile__label--ratio\">\r\n <div class=\"label-box\">\r\n <div>上期vs上上期</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value quantile__value--ratio\">\r\n ${chainRatio(getFromArr(pre1stxxxServiceTrafficTotal,0,\'bytes\',\'number\'),getFromArr(pre2ndxxxServiceTrafficTotal,0,\'bytes\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"table__footer\">\r\n <div class=\"footer__label\">* 流量速率分位值计算方式:</div>以5分钟为时间粒度计算平均流量速率vi,取观测时间范围内的{v1, v2, v3……vn}的分位值,下同。\r\n </div>\r\n</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line\" id=\"canvas1\"></div>\r\n <div class=\"echarts__title\">图1 当日流量变化曲线</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.服务质量概况</div>\r\n<div class=\"table-box indent-3\">\r\n <div class=\"table__title\">表2 整体服务质量</div>\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">服务质量指标</th>\r\n <th class=\"table__th\">分位值</th>\r\n <th class=\"table__th\">峰值</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr\">\r\n <td class=\"table__td\">TCP会话创建延迟</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inTcp,0,\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">重传率</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_max\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxServiceOut2inPacketRetrans,0,\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </tbody></table>\r\n</div>\r\n<div class=\"table__title\">表3 Top10 APP 服务质量</div>\r\n<table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th rowspan=\"2\" class=\"table__th\">APP</th>\r\n <th rowspan=\"2\" class=\"table__th\">流量占比</th>\r\n <th colspan=\"3\" class=\"table__th\">TCP会话延迟(ms)</th>\r\n <th colspan=\"3\" class=\"table__th\">重传率</th>\r\n </tr>\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n <th class=\"table__th\">P50 P90 P99</th>\r\n <th class=\"table__th\">均值</th>\r\n <th class=\"table__th\">均值环比</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <#if xxxIPTagsTop10AppBytes??>\r\n <#list xxxIPTagsTop10AppBytes as val>\r\n <tr class=\"table__tr\">\r\n <td class=\"table__td\">${getFromObj(val,\'app_company\',\'string\')}</td>\r\n <td class=\"table__td\">${proportion(getFromObj(val,\'bytes\',\'number\'),getFromArr(xxxServiceTrafficTotal,0,\'bytes\',\'number\'))}</td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertTime(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'),getFromArr(pre1stxxxIPTagsTop10AppTCP,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, pre1stxxxIPTagsTop10AppTCP),\'establish_latency_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n <div class=\"td__quantile-group\">\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p50\"></span>P50</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p50\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p90\"></span>P90</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p90\',\'number\'))}\r\n </div>\r\n </div>\r\n <div class=\"td__quantile\">\r\n <div class=\"quantile__label\">\r\n <div class=\"label-box\">\r\n <div><span class=\"quantile__point quantile__point--p99\"></span>P99</div>\r\n </div>\r\n </div>\r\n <div class=\"quantile__value\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_p99\',\'number\'))}\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"table__td\">\r\n ${convertPercent(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n <td class=\"table__td\">\r\n ${chainRatio(getFromArr(xxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, xxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'),getFromArr(pre1stxxxIPTagsTop10AppPacketRetrans,findRecordByName(getFromObj(val,\'app_company\',\'string\'), \'app_company\', val, pre1stxxxIPTagsTop10AppPacketRetrans),\'pkt_retrans_percent_avg\',\'number\'))}\r\n </td>\r\n </tr>\r\n </#list>\r\n </#if>\r\n </tbody>\r\n</table>\r\n\r\n<div class=\"header2\">二.业务分布</div>\r\n<div class=\"header3\">1.承载业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas13\"></div>\r\n <div class=\"echarts__title\">图2 APP流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas18\"></div>\r\n <div class=\"echarts__title\">图3 域名流量占比</div>\r\n </span>\r\n</div>\r\n<div class=\"header3\">2.访问业务分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas14\"></div>\r\n <div class=\"echarts__title\">图4 APP流量占比</div>\r\n </span>\r\n <span class=\"echarts pie-style\">\r\n <div class=\"echarts__canvas echarts__pie\" id=\"canvas19\"></div>\r\n <div class=\"echarts__title\">图5 域名流量占比</div>\r\n </span>\r\n</div>\r\n\r\n<div class=\"header2\">三.地理位置分布</div>\r\n<div class=\"header3\">1.各省份流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas3\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图6 各省份访问${ipTag}IP的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas9\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图7 各省份访问${ipTag}IP的Top 10 省份响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas2\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图8 ${ipTag}IP访问各省份的Top 10 省份请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas8\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各省份流量速率</th>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_super_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图9 ${ipTag}IP访问各省份的Top 10 省份响应流量分布 </div>\r\n</div>\r\n\r\n<div class=\"header3\">2.省内各地区流量分布</div>\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas5\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图10 省内访问${ipTag}IP的Top 10 省内地区请求流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas11\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'client_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图11 省内访问${ipTag}IP的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas4\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody><tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'sent_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图12 ${ipTag}IP访问省内的Top 10 省内地区请求流量分布 </div>\r\n</div>\r\n\r\n<div class=\"echarts-box indent-3\">\r\n <div class=\"echarts\">\r\n <div class=\"echarts__canvas echarts__line-and-bar\" id=\"canvas10\"></div>\r\n </div>\r\n</div>\r\n<div class=\"table-box indent-3\">\r\n <table class=\"table\">\r\n <thead class=\"table__header\">\r\n <tr class=\"table__tr\">\r\n <th class=\"table__th\">各地区流量速率</th>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <th class=\"table__th\">${getFromObj(val,\'server_admin_area\',\'string\')}</th>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">峰值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_max\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n <tr class=\"table__tr font-size-14\">\r\n <td class=\"table__td\">均值</td>\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as val>\r\n <td class=\"table__td\">${convertNumber(getFromObj(val,\'received_rate_avg\',\'number\'),\'bps\',1000)}</td>\r\n </#list>\r\n </#if>\r\n </tr>\r\n </tbody></table>\r\n <div class=\"echarts__title echarts__line-and-bar-title\">图13 ${ipTag}IP访问省内的Top 10 省内地区响应流量分布</div>\r\n</div>\r\n\r\n<script>\r\n /** 数据 begin */\r\n // 时间区间\r\n var timeRange = [${startTime}, ${endTime}]\r\n // 时区偏移毫秒\r\n var timeZoneOffset = ${timeZoneOffset}\r\n /* 1.1 流量变化曲线 */\r\n // 总流量\r\n var trafficTotal = ${jsGetNumFromArr(trafficTotal,0,\'bytes\')/1024}\r\n\r\n // 省外访问省内服字节跳动的服务质量(xxxServiceOut2inTrafficTotal)\r\n var xxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n //前一周期(Pre 1st xxxService ZA traffic total)\r\n var Pre1stxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService ZA traffic total)\r\n var Pre2ndxxxServiceOut2inTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceOut2inTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外字节跳动服务流量(xxxService In2idc traffic total)\r\n var xxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService In2idc traffic total)\r\n var pre1stxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService In2idc traffic total)\r\n var pre2ndxxxServiceIn2outTrafficTotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2outTrafficTotal,0,\'bytes\')/1024}\r\n }\r\n\r\n // 省外访问省内服${ipTag}的服务质量\r\n var xxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前一周期(Pre 1st xxxService Idc2in traffic total)\r\n var Pre1stxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre1stxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 前二周期(Pre 2nd xxxService Idc2in traffic total)\r\n var Pre2ndxxxServiceIdc2intraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(Pre2ndxxxServiceIdc2intraffictotal,0,\'bytes\')/1024}\r\n }\r\n // 省内访问省外${ipTag}服务流量\r\n var xxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(xxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n var pre1stxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre1stxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n var pre2ndxxxServiceIn2idctraffictotal = {\r\n bytes_sent: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_sent\')/1024},\r\n bytes_received: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes_received\')/1024},\r\n bytes: ${jsGetNumFromArr(pre2ndxxxServiceIn2idctraffictotal,0,\'bytes\')/1024}\r\n }\r\n // ${ipTag}服务速率\r\n var xxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(xxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(xxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(xxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(xxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(xxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(xxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre1stxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre1stxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n var pre2ndxxxServiceRate = {\r\n rate50: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate50\')/1000},\r\n rate90: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate90\')/1000},\r\n rate99: ${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate99\')/1000},\r\n rate_avg:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_avg\')/1000},\r\n rate_max:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_max\')/1000},\r\n rate_min:${jsGetNumFromArr(pre2ndxxxServiceRate,0,\'rate_min\')/1000}\r\n }\r\n // ${ipTag}服务当日流量变化曲线\r\n var xxxServiceTrafficChangingCurve = [\r\n <#if xxxServiceTrafficChangingCurve??>\r\n <#list xxxServiceTrafficChangingCurve as d>\r\n {stat_time:${jsGetNumFromObj(d,\'stat_time\') * 1000},rate:${jsGetNumFromObj(d,\'rate\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2 服务质量概况\r\n // 1.2.1\r\n var appCompanyTrafficTop10 = [\r\n <#if appCompanyTrafficTop10??>\r\n <#list appCompanyTrafficTop10 as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")},rate_avg:${jsGetNumFromObj(d,\'rate_avg\')/1000},rate_min:${jsGetNumFromObj(d,\'rate_min\')/1000},rate_max:${jsGetNumFromObj(d,\'rate_max\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 1.2.2 Top 10 App服务质量\r\n // Top 10 App服务质量 TCP会话创建延迟\r\n var xxxIPTagsTop10AppTCP = {\r\n <#if xxxIPTagsTop10AppTCP??>\r\n <#list xxxIPTagsTop10AppTCP as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.2 前一周期Top10 App Company TCP会话创建延迟\r\n var pre1stxxxIPTagsTop10AppTCP = {\r\n <#if pre1stxxxIPTagsTop10AppTCP??>\r\n <#list pre1stxxxIPTagsTop10AppTCP as d>\r\n establish_latency_p50:${jsGetNumFromObj(d,\'establish_latency_p50\')},establish_latency_p90:${jsGetNumFromObj(d,\'establish_latency_p90\')},establish_latency_p99:${jsGetNumFromObj(d,\'establish_latency_p99\')},establish_latency_avg:${jsGetNumFromObj(d,\'establish_latency_avg\')},establish_latency_max:${jsGetNumFromObj(d,\'establish_latency_max\')},establish_latency_min:${jsGetNumFromObj(d,\'establish_latency_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.3 重传率\r\n var xxxIPTagsTop10AppPacketRetrans = {\r\n <#if xxxIPTagsTop10AppPacketRetrans??>\r\n <#list xxxIPTagsTop10AppPacketRetrans as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n // 3.3.4 前一周期重传率\r\n var pre1stxxxIPTagsTop10AppPacketRetrans = {\r\n <#if pre1stxxxIPTagsTop10AppPacketRetrans??>\r\n <#list pre1stxxxIPTagsTop10AppPacketRetrans as d>\r\n pkt_retrans_percent_p50:${jsGetNumFromObj(d,\'pkt_retrans_percent_p50\')},pkt_retrans_percent_p90:${jsGetNumFromObj(d,\'pkt_retrans_percent_p90\')},pkt_retrans_percent_p99:${jsGetNumFromObj(d,\'pkt_retrans_percent_p99\')},pkt_retrans_percent_avg:${jsGetNumFromObj(d,\'pkt_retrans_percent_avg\')},pkt_retrans_percent_max:${jsGetNumFromObj(d,\'pkt_retrans_percent_max\')},pkt_retrans_percent_min:${jsGetNumFromObj(d,\'pkt_retrans_percent_min\')},\r\n </#list>\r\n </#if>\r\n }\r\n\r\n /* 2 业务分布 */\r\n var xxxIPTagsTop10AppBytes = [\r\n <#if xxxIPTagsTop10AppBytes??>\r\n <#list xxxIPTagsTop10AppBytes as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${(jsGetNumFromObj(d,\'bytes\')/1024)?string(\"0.####\")}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 承载业务分布\r\n // APP流量占比\r\n var Top10RelatedAppBytesAsServer = [\r\n <#if Top10RelatedAppBytesAsServer??>\r\n <#list Top10RelatedAppBytesAsServer as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 域名流量占比\r\n var Top10RelatedDomainBytesAsServer = [\r\n <#if Top10RelatedDomainBytesAsServer??>\r\n <#list Top10RelatedDomainBytesAsServer as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 访问业务分布\r\n // APP流量占比\r\n var Top10RelatedAppBytesAsClient = [\r\n <#if Top10RelatedAppBytesAsClient??>\r\n <#list Top10RelatedAppBytesAsClient as d>\r\n {app_company:\"${getFromObj(d,\'app_company\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n // 域名流量占比\r\n var Top10RelatedDomainBytesAsClient = [\r\n <#if Top10RelatedDomainBytesAsClient??>\r\n <#list Top10RelatedDomainBytesAsClient as d>\r\n {domain:\"${getFromObj(d,\'domain\',\'string\')}\",bytes:${jsGetNumFromObj(d,\'bytes\')/1024}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n\r\n /* 3 地理位置分布 */\r\n // 3.1 各省份流量分布\r\n // Top 10省份流量分布(省内访问省外${ipTag}服务)\r\n var provinceIn2outSentTrafficBytesTop10 = [\r\n <#if provinceIn2outSentTrafficBytesTop10??>\r\n <#list provinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province In2out Sent Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outSentTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ipTag}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n var provinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if provinceIn2outReceivedTrafficBytesTop10??>\r\n <#list provinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期( Pre 1st Province In2out Received Traffic Bytes Top 10)\r\n var pre1stProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province In2out Received Traffic Bytes Top 10)\r\n var pre2ndProvinceIn2outReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceIn2outReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceIn2outReceivedTrafficBytesTop10 as d>\r\n {server_super_admin_area:\"${getFromObj(d,\'server_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省份流量分布(省外访问省内${ipTag}服务)\r\n var provinceOut2inSentTrafficBytesTop10 = [\r\n <#if provinceOut2inSentTrafficBytesTop10??>\r\n <#list provinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Sent Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inSentTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inSentTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inSentTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ipTag}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n var provinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if provinceOut2inReceivedTrafficBytesTop10??>\r\n <#list provinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Province Out2in Received Traffic Bytes Top 10)\r\n var pre1stProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre1stProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Province Out2in Received Traffic Bytes Top 10)\r\n var pre2ndProvinceOut2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndProvinceOut2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndProvinceOut2inReceivedTrafficBytesTop10 as d>\r\n {client_super_admin_area:\"${getFromObj(d,\'client_super_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /* 3.2 省内各地区流量分布 */\r\n // Top 10省内各地区流量分布(省内访问省外${ipTag}服务)\r\n var regionIdc2inSentTrafficBytesTop10 = [\r\n <#if regionIdc2inSentTrafficBytesTop10??>\r\n <#list regionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region In2out Sent Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inSentTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省内访问省外${ipTag}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n var regionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if regionIdc2inReceivedTrafficBytesTop10??>\r\n <#list regionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region AZ Received Traffic Bytes Top 10)\r\n var pre1stRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region In2out Received Traffic Bytes Top 10)\r\n var pre2ndRegionIdc2inReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIdc2inReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIdc2inReceivedTrafficBytesTop10 as d>\r\n {server_admin_area:\"${getFromObj(d,\'server_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // Top 10省内各地区流量分布(省外访问省内${ipTag}服务)\r\n var regionIn2idcSentTrafficBytesTop10 = [\r\n <#if regionIn2idcSentTrafficBytesTop10??>\r\n <#list regionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Sent Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Sent Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcSentTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcSentTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcSentTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_sent:${jsGetNumFromObj(d,\'bytes_sent\')/1024},sent_rate_avg:${jsGetNumFromObj(d,\'sent_rate_avg\')/1000},sent_rate_max:${jsGetNumFromObj(d,\'sent_rate_max\')/1000},sent_rate_min:${jsGetNumFromObj(d,\'sent_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 省外访问省内${ipTag}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n var regionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if regionIn2idcReceivedTrafficBytesTop10??>\r\n <#list regionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前一周期(Pre 1st Region Out2in Received Traffic Bytes Top 10)\r\n var pre1stRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre1stRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre1stRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n // 前二周期(Pre 2nd Region Out2in Received Traffic Bytes Top 10)\r\n var pre2ndRegionIn2idcReceivedTrafficBytesTop10 = [\r\n <#if pre2ndRegionIn2idcReceivedTrafficBytesTop10??>\r\n <#list pre2ndRegionIn2idcReceivedTrafficBytesTop10 as d>\r\n {client_admin_area:\"${getFromObj(d,\'client_admin_area\',\'string\')}\",bytes_received:${jsGetNumFromObj(d,\'bytes_received\')/1024},received_rate_avg:${jsGetNumFromObj(d,\'received_rate_avg\')/1000},received_rate_max:${jsGetNumFromObj(d,\'received_rate_max\')/1000},received_rate_min:${jsGetNumFromObj(d,\'received_rate_min\')/1000}},\r\n </#list>\r\n </#if>\r\n ]\r\n\r\n /** 数据 end */\r\n\r\n ${reportJsCommon}\r\n\r\n\r\n if (!isNaN(parseInt(timeZoneOffset))) {\r\n var explorerTimeOffset = new Date().getTimezoneOffset() * 60 * 1000\r\n xxxServiceTrafficChangingCurve = xxxServiceTrafficChangingCurve.map(d => ({ rate: d.rate, stat_time: d.stat_time + explorerTimeOffset + timeZoneOffset}))\r\n timeRange = [timeRange[0] + explorerTimeOffset / 1000 + timeZoneOffset / 1000, timeRange[1] + explorerTimeOffset / 1000 + timeZoneOffset / 1000]\r\n }\r\n // 计算出前三个周期的时间戳范围,填充时间\r\n function initTimeRange () {\r\n var timeOffset = timeRange[1] - timeRange[0]\r\n var wholeTimeOffset = [60 * 60 - 1, 60 * 60 * 24 - 1, 60 * 60 * 24 * 7 - 1]\r\n if (wholeTimeOffset.indexOf(timeOffset) > -1) {\r\n timeOffset++\r\n }\r\n var prevTimeRange = [timeRange[0] - timeOffset, timeRange[1] - timeOffset]\r\n var pprevTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n var ppprevTimeRange = [pprevTimeRange[0] - timeOffset, pprevTimeRange[1] - timeOffset]\r\n var statisticTimeRange = [prevTimeRange[0] - timeOffset, prevTimeRange[1] - timeOffset]\r\n\r\n var currentRanges = [\r\n \'currentRange0\',\r\n \'currentRange20\',\r\n \'currentRange21\',\r\n \'currentRange22\'\r\n ]\r\n var statisticsRanges = [\r\n \'statisticsRange9\',\r\n \'statisticsRange10\',\r\n \'statisticsRange11\'\r\n ]\r\n var prevRanges = [\r\n \'prevRange20\',\r\n \'prevRange21\',\r\n \'prevRange22\'\r\n ]\r\n\r\n var currentRangeStr = \'\'\r\n var prevRangeStr = \'\'\r\n var statisticsStr = \'\'\r\n if (isWholeDay(timeRange)) {\r\n currentRangeStr = timestampToStr(timeRange[0]).substring(0, 10)\r\n prevRangeStr = timestampToStr(prevTimeRange[0]).substring(0, 10)\r\n statisticsStr = timestampToStr(statisticTimeRange[0]).substring(0, 10)\r\n } else {\r\n currentRangeStr = timestampToStr(timeRange[0]) + \' -- \' + timestampToStr(timeRange[1])\r\n prevRangeStr = timestampToStr(prevTimeRange[0]) + \' -- \' + timestampToStr(prevTimeRange[1])\r\n statisticsStr = timestampToStr(statisticTimeRange[0]) + \' -- \' + timestampToStr(statisticTimeRange[1])\r\n }\r\n currentRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = currentRangeStr\r\n }\r\n })\r\n prevRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = prevRangeStr\r\n }\r\n })\r\n statisticsRanges.forEach(c => {\r\n var dom = document.getElementById(c)\r\n if (dom) {\r\n dom.innerText = statisticsStr\r\n }\r\n })\r\n }\r\n // Top5 流量占比 公方法\r\n function barDataFormatHandling (total, preTotalList, ppreTotalList, list, preList, ppreList, oneLevelKey, twoLevelKey, dataKey) {\r\n var seriesData = []\r\n var prevSeriesData = []\r\n var pprevSeriesData = []\r\n var categoryData = []\r\n if (total) {\r\n var prevTotal = preTotalList.find(t => t[oneLevelKey] === total[oneLevelKey])\r\n if (prevTotal) {\r\n var pprevTotal = ppreTotalList.find(d => d[oneLevelKey] === prevTotal[oneLevelKey])\r\n }\r\n list.forEach(d => {\r\n if (d[oneLevelKey] === total[oneLevelKey]) {\r\n categoryData.push(d[twoLevelKey])\r\n if (total && total[dataKey] !== 0) {\r\n seriesData.push(d[dataKey] / total[dataKey])\r\n } else {\r\n seriesData.push(0)\r\n }\r\n var prevTwoLevel = preList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (prevTwoLevel && prevTwoLevel[dataKey] && prevTotal && prevTotal[dataKey] !== 0) {\r\n prevSeriesData.push(prevTwoLevel[dataKey] / prevTotal[dataKey])\r\n var pprevTwoLevel = ppreList.find(p => p[twoLevelKey] === d[twoLevelKey] && p[oneLevelKey] === d[oneLevelKey])\r\n if (pprevTwoLevel && pprevTwoLevel[dataKey] && pprevTotal && pprevTotal[dataKey] !== 0) {\r\n pprevSeriesData.push(pprevTwoLevel[dataKey] / pprevTotal[dataKey])\r\n } else {\r\n pprevSeriesData.push(0)\r\n }\r\n } else {\r\n prevSeriesData.push(0)\r\n }\r\n }\r\n })\r\n }\r\n return {\r\n seriesData,\r\n prevSeriesData,\r\n pprevSeriesData,\r\n categoryData\r\n }\r\n }\r\n\r\n function initEcharts1 () {\r\n var seriesData1 = xxxServiceTrafficChangingCurve.map(d => [d.stat_time, d.rate])\r\n var unit1 = \'Kbps\'\r\n\r\n var myChart = initEchartsInstance(\'canvas1\')\r\n var option = {\r\n color: chartColor,\r\n animation: false,\r\n grid: {\r\n left: 100,\r\n right: 120,\r\n bottom: 25,\r\n top: 40\r\n },\r\n xAxis: {\r\n type: \'time\',\r\n splitNumber: 12\r\n },\r\n yAxis: {\r\n splitLine: { show: false },\r\n offset: 10,\r\n axisLabel: {\r\n formatter (params) {\r\n return unitConvert(params, unitTypes.bps, unit1).join(\' \')\r\n }\r\n }\r\n },\r\n series: {\r\n type: \'line\',\r\n symbol: \'none\',\r\n data: seriesData1,\r\n markLine: {\r\n silent: true,\r\n lineStyle: {\r\n color: \'rgb(153,153,153)\'\r\n },\r\n symbol: \'none\',\r\n label: {\r\n formatter (params) {\r\n var arr = unitConvert(params.value, unitTypes.bps, unit1).join(\' \')\r\n var desc = \'\'\r\n switch (params.dataIndex) {\r\n case 0: {\r\n desc = \'P50\'\r\n break\r\n }\r\n case 1: {\r\n desc = \'P90\'\r\n break\r\n }\r\n case 2: {\r\n desc = \'P99\'\r\n break\r\n }\r\n default: break\r\n }\r\n return arr + \' (\' + desc + \')\'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (xxxServiceRate.rate99 > xxxServiceRate.rate90 && xxxServiceRate.rate90 > xxxServiceRate.rate50 && xxxServiceRate.rate50 !== 0 && xxxServiceRate.rate90 !== 0 && xxxServiceRate.rate99 !== 0){\r\n option.visualMap = {\r\n show: false,\r\n pieces: [\r\n {\r\n lte: xxxServiceRate.rate50,\r\n color: \'rgb(251,219,15)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate50,\r\n lte: xxxServiceRate.rate90,\r\n color: \'rgb(252,125,2)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate90,\r\n lte: xxxServiceRate.rate99,\r\n color: \'rgb(253,1,0)\'\r\n },\r\n {\r\n gt: xxxServiceRate.rate99,\r\n color: \'rgb(170,6,159)\'\r\n }\r\n ],\r\n outOfRange: {\r\n color: \'rgb(153,153,153)\'\r\n }\r\n }\r\n option.series.markLine.data = [\r\n {\r\n yAxis: xxxServiceRate.rate50\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate90\r\n },\r\n {\r\n yAxis: xxxServiceRate.rate99\r\n }\r\n ]\r\n }\r\n myChart.setOption(option)\r\n }\r\n var barOption1 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'请求流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar1,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line3\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line3\r\n }\r\n }\r\n ]\r\n }\r\n var barOption2 = {\r\n animation: false,\r\n grid: {\r\n top: 50,\r\n bottom: 25,\r\n right: 40,\r\n left: 70\r\n },\r\n legend: {\r\n show: true,\r\n top: \'top\',\r\n left: \'left\'\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: [\r\n {\r\n name: \'流量\',\r\n nameTextStyle: {\r\n color: \'transparent\'\r\n },\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.byte, \'KB\').join(\'\')\r\n }\r\n }\r\n },\r\n {\r\n show: false,\r\n name: \'环比\',\r\n type: \'value\'\r\n }\r\n ],\r\n series: [\r\n {\r\n name: \'响应流量\',\r\n barMinHeight: 5,\r\n type: \'bar\',\r\n barWidth: 40,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return unitConvert(param.value, unitTypes.byte, \'KB\').join(\'\') + \'\\n\' + unitConvert(param.data.percent, unitTypes.percent).join(\'\')\r\n },\r\n distance: 3,\r\n color: barLineColor.bar2,\r\n position: \'top\',\r\n fontSize: 10\r\n },\r\n itemStyle: {\r\n color: barLineColor.bar2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'本期vs上期\',\r\n type: \'line\',\r\n zlevel: 1,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'right\',\r\n position: \'top\',\r\n color: barLineColor.line2\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line2\r\n }\r\n },\r\n {\r\n yAxisIndex: 1,\r\n name: \'上期vs上上期\',\r\n type: \'line\',\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.value.toFixed(2) + \'%\'\r\n },\r\n align: \'left\',\r\n position: \'bottom\',\r\n color: barLineColor.line1\r\n },\r\n lineStyle: {\r\n type: \'dashed\'\r\n },\r\n itemStyle: {\r\n color: barLineColor.line1\r\n }\r\n }\r\n ]\r\n }\r\n // Top 10省份流量分布(省内访问省外${ipTag}服务)\r\n function initEcharts2 () {\r\n var categoryData2 = provinceIn2outSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData2 = provinceIn2outSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2outTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_2 = []\r\n // 第二条线\r\n var lineSeriesData2_2 = []\r\n provinceIn2outSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outSentTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_2.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outSentTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_2.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_2.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_2.push(0)\r\n lineSeriesData2_2.push(0)\r\n }\r\n })\r\n var copyLineSeriesData2 = [...lineSeriesData1_2, ...lineSeriesData2_2]\r\n var copyBarSeriesData2 = [...barSeriesData2]\r\n copyLineSeriesData2.sort((a, b) => a - b)\r\n copyBarSeriesData2.sort((a, b) => a.value - b.value)\r\n var barMax2 = copyBarSeriesData2.length > 0 ? copyBarSeriesData2[copyBarSeriesData2.length - 1].value : 50\r\n var lineMin2 = copyLineSeriesData2[0] ? copyLineSeriesData2[0] : 0\r\n var lineMax2 = copyLineSeriesData2.length > 0 ? copyLineSeriesData2[copyLineSeriesData2.length - 1] : 0\r\n if (lineMin2 == 0 && lineMin2 == lineMax2) {\r\n lineMin2 = -5\r\n lineMax2 = 1\r\n } else {\r\n var tempLineMin2 = lineMin2\r\n lineMin2 = lineMin2 - 2.5 * (lineMax2 - lineMin2)\r\n lineMax2 = lineMax2 + 0.5 * (lineMax2 - tempLineMin2)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas2\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData2\r\n option.yAxis[0].max = barMax2 * 2\r\n option.yAxis[1].min = lineMin2\r\n option.yAxis[1].max = lineMax2\r\n option.series[0].data = barSeriesData2\r\n option.series[1].data = lineSeriesData1_2\r\n option.series[2].data = lineSeriesData2_2\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${ipTag}服务TOP10省份响应流量分布(Province In2out Received Traffic Bytes Top 10)\r\n function initEcharts8 () {\r\n var categoryData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_super_admin_area))\r\n var barSeriesData8 = provinceIn2outReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2outTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2outTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_8 = []\r\n // 第二条线\r\n var lineSeriesData2_8 = []\r\n provinceIn2outReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceIn2outReceivedTrafficBytesTop10.find(pt => pt.server_super_admin_area === t.server_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_8.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceIn2outReceivedTrafficBytesTop10.find(ppt => findData.server_super_admin_area === ppt.server_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_8.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_8.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_8.push(0)\r\n lineSeriesData2_8.push(0)\r\n }\r\n })\r\n var copyLineSeriesData8 = [...lineSeriesData1_8, ...lineSeriesData2_8]\r\n var copyBarSeriesData8 = [...barSeriesData8]\r\n copyLineSeriesData8.sort((a, b) => a - b)\r\n copyBarSeriesData8.sort((a, b) => a.value - b.value)\r\n var barMax8 = copyBarSeriesData8.length > 0 ? copyBarSeriesData8[copyBarSeriesData8.length - 1].value : 50\r\n var lineMin8 = copyLineSeriesData8[0] ? copyLineSeriesData8[0] : 0\r\n var lineMax8 = copyLineSeriesData8.length > 0 ? copyLineSeriesData8[copyLineSeriesData8.length - 1] : 0\r\n if (lineMin8 == 0 && lineMin8 == lineMax8) {\r\n lineMin8 = -5\r\n lineMax8 = 1\r\n } else {\r\n var tempLineMin8 = lineMin8\r\n lineMin8 = lineMin8 - 2.5 * (lineMax8 - lineMin8)\r\n lineMax8 = lineMax8 + 0.5 * (lineMax8 - tempLineMin8)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas8\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData8\r\n option.yAxis[0].max = barMax8 * 2\r\n option.yAxis[1].min = lineMin8\r\n option.yAxis[1].max = lineMax8\r\n option.series[0].data = barSeriesData8\r\n option.series[1].data = lineSeriesData1_8\r\n option.series[2].data = lineSeriesData2_8\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省份流量分布(省外访问省内${ipTag}服务)\r\n function initEcharts3 () {\r\n var categoryData3 = provinceOut2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData3 = provinceOut2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceOut2inTrafficTotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_3 = []\r\n // 第二条线\r\n var lineSeriesData2_3 = []\r\n provinceOut2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inSentTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_3.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData3 = pre2ndProvinceOut2inSentTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData3 && findData3.bytes_sent) {\r\n lineSeriesData2_3.push(findData3.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData3.bytes_sent) / parseFloat(findData3.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_3.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_3.push(0)\r\n lineSeriesData2_3.push(0)\r\n }\r\n })\r\n var copyLineSeriesData3 = [...lineSeriesData1_3, ...lineSeriesData2_3]\r\n var copyBarSeriesData3 = [...barSeriesData3]\r\n copyLineSeriesData3.sort((a, b) => a - b)\r\n copyBarSeriesData3.sort((a, b) => a.value - b.value)\r\n var barMax3 = copyBarSeriesData3.length > 0 ? copyBarSeriesData3[copyBarSeriesData3.length - 1].value : 50\r\n var lineMin3 = copyLineSeriesData3[0] ? copyLineSeriesData3[0] : 0\r\n var lineMax3 = copyLineSeriesData3.length > 0 ? copyLineSeriesData3[copyLineSeriesData3.length - 1] : 0\r\n if (lineMin3 == 0 && lineMin3 == lineMax3) {\r\n lineMin3 = -5\r\n lineMax3 = 1\r\n } else {\r\n var tempLineMin3 = lineMin3\r\n lineMin3 = lineMin3 - 2.5 * (lineMax3 - lineMin3)\r\n lineMax3 = lineMax3 + 0.5 * (lineMax3 - tempLineMin3)\r\n }\r\n\r\n\r\n var myChart = initEchartsInstance(\'canvas3\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData3\r\n option.yAxis[0].max = barMax3 * 2\r\n option.yAxis[1].min = lineMin3\r\n option.yAxis[1].max = lineMax3\r\n option.series[0].data = barSeriesData3\r\n option.series[1].data = lineSeriesData1_3\r\n option.series[2].data = lineSeriesData2_3\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${ipTag}服务TOP 10省份响应流量分布(Province Out2in Received Traffic Bytes Top 10)\r\n function initEcharts9 () {\r\n var categoryData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_super_admin_area))\r\n var barSeriesData9 = provinceOut2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceOut2inTrafficTotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceOut2inTrafficTotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_9 = []\r\n // 第二条线\r\n var lineSeriesData2_9 = []\r\n provinceOut2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stProvinceOut2inReceivedTrafficBytesTop10.find(pt => pt.client_super_admin_area === t.client_super_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_9.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndProvinceOut2inReceivedTrafficBytesTop10.find(ppt => findData.client_super_admin_area === ppt.client_super_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_9.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_9.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_9.push(0)\r\n lineSeriesData2_9.push(0)\r\n }\r\n })\r\n var copyLineSeriesData9 = [...lineSeriesData1_9, ...lineSeriesData2_9]\r\n var copyBarSeriesData9 = [...barSeriesData9]\r\n copyLineSeriesData9.sort((a, b) => a - b)\r\n copyBarSeriesData9.sort((a, b) => a.value - b.value)\r\n var barMax9 = copyBarSeriesData9.length > 0 ? copyBarSeriesData9[copyBarSeriesData9.length - 1].value : 50\r\n var lineMin9 = copyLineSeriesData9[0] ? copyLineSeriesData9[0] : 0\r\n var lineMax9 = copyLineSeriesData9.length > 0 ? copyLineSeriesData9[copyLineSeriesData9.length - 1] : 0\r\n if (lineMin9 == 0 && lineMin9 == lineMax9) {\r\n lineMin9 = -5\r\n lineMax9 = 1\r\n } else {\r\n var tempLineMin9 = lineMin9\r\n lineMin9 = lineMin9 - 2.5 * (lineMax9 - lineMin9)\r\n lineMax9 = lineMax9 + 0.5 * (lineMax9 - tempLineMin9)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas9\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData9\r\n option.yAxis[0].max = barMax9 * 2\r\n option.yAxis[1].min = lineMin9\r\n option.yAxis[1].max = lineMax9\r\n option.series[0].data = barSeriesData9\r\n option.series[1].data = lineSeriesData1_9\r\n option.series[2].data = lineSeriesData2_9\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省内访问省外${ipTag}服务)\r\n function initEcharts4 () {\r\n var categoryData4 = regionIdc2inSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData4 = regionIdc2inSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIdc2intraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIdc2intraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_4 = []\r\n // 第二条线\r\n var lineSeriesData2_4 = []\r\n regionIdc2inSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inSentTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_4.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inSentTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_4.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_4.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_4.push(0)\r\n lineSeriesData2_4.push(0)\r\n }\r\n })\r\n var copyLineSeriesData4 = [...lineSeriesData1_4, ...lineSeriesData2_4]\r\n var copyBarSeriesData4 = [...barSeriesData4]\r\n copyLineSeriesData4.sort((a, b) => a - b)\r\n copyBarSeriesData4.sort((a, b) => a.value - b.value)\r\n var barMax4 = copyBarSeriesData4.length > 0 ? copyBarSeriesData4[copyBarSeriesData4.length - 1].value : 50\r\n var lineMin4 = copyLineSeriesData4[0] ? copyLineSeriesData4[0] : 0\r\n var lineMax4 = copyLineSeriesData4.length > 0 ? copyLineSeriesData4[copyLineSeriesData4.length - 1] : 0\r\n if (lineMin4 == 0 && lineMin4 == lineMax4) {\r\n lineMin4 = -5\r\n lineMax4 = 1\r\n } else {\r\n var tempLineMin4 = lineMin4\r\n lineMin4 = lineMin4 - 2.5 * (lineMax4 - lineMin4)\r\n lineMax4 = lineMax4 + 0.5 * (lineMax4 - tempLineMin4)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas4\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData4\r\n option.yAxis[0].max = barMax4 * 2\r\n option.yAxis[1].min = lineMin4\r\n option.yAxis[1].max = lineMax4\r\n option.series[0].data = barSeriesData4\r\n option.series[1].data = lineSeriesData1_4\r\n option.series[2].data = lineSeriesData2_4\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省内访问省外${ipTag}服务TOP 10 省内地区响应流量分布(Region In2out Received Traffic Bytes Top 10)\r\n function initEcharts10 () {\r\n var categoryData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.server_admin_area))\r\n var barSeriesData10 = regionIdc2inReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIdc2intraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIdc2intraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_10 = []\r\n // 第二条线\r\n var lineSeriesData2_10 = []\r\n regionIdc2inReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIdc2inReceivedTrafficBytesTop10.find(pt => pt.server_admin_area === t.server_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_10.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIdc2inReceivedTrafficBytesTop10.find(ppt => findData.server_admin_area === ppt.server_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_10.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_10.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_10.push(0)\r\n lineSeriesData2_10.push(0)\r\n }\r\n })\r\n var copyLineSeriesData10 = [...lineSeriesData1_10, ...lineSeriesData2_10]\r\n var copyBarSeriesData10 = [...barSeriesData10]\r\n copyLineSeriesData10.sort((a, b) => a - b)\r\n copyBarSeriesData10.sort((a, b) => a.value - b.value)\r\n var barMax10 = copyBarSeriesData10.length > 0 ? copyBarSeriesData10[copyBarSeriesData10.length - 1].value : 50\r\n var lineMin10 = copyLineSeriesData10[0] ? copyLineSeriesData10[0] : 0\r\n var lineMax10 = copyLineSeriesData10.length > 0 ? copyLineSeriesData10[copyLineSeriesData10.length - 1] : 0\r\n if (lineMin10 == 0 && lineMin10 == lineMax10) {\r\n lineMin10 = -5\r\n lineMax10 = 1\r\n } else {\r\n var tempLineMin10 = lineMin10\r\n lineMin10 = lineMin10 - 2.5 * (lineMax10 - lineMin10)\r\n lineMax10 = lineMax10 + 0.5 * (lineMax10 - tempLineMin10)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas10\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData10\r\n option.yAxis[0].max = barMax10 * 2\r\n option.yAxis[1].min = lineMin10\r\n option.yAxis[1].max = lineMax10\r\n option.series[0].data = barSeriesData10\r\n option.series[1].data = lineSeriesData1_10\r\n option.series[2].data = lineSeriesData2_10\r\n myChart.setOption(option)\r\n }\r\n\r\n // Top 10省内各地区流量分布(省外访问省内${ipTag}服务)\r\n function initEcharts5 () {\r\n var categoryData5 = regionIn2idcSentTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData5 = regionIn2idcSentTrafficBytesTop10.map(t => {\r\n if (!t.bytes_sent) {\r\n t.bytes_sent = 0\r\n }\r\n return {\r\n value: t.bytes_sent,\r\n percent: xxxServiceIn2idctraffictotal.bytes_sent === 0 ? 0 : parseFloat(t.bytes_sent) / xxxServiceIn2idctraffictotal.bytes_sent\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_5 = []\r\n // 第二条线\r\n var lineSeriesData2_5 = []\r\n regionIn2idcSentTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcSentTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_sent) {\r\n lineSeriesData1_5.push(findData.bytes_sent === 0 ? 0 : parseFloat(((t.bytes_sent - findData.bytes_sent) / parseFloat(findData.bytes_sent) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcSentTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_sent) {\r\n lineSeriesData2_5.push(findData2.bytes_sent === 0 ? 0 : parseFloat(((findData.bytes_sent - findData2.bytes_sent) / parseFloat(findData2.bytes_sent) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_5.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_5.push(0)\r\n lineSeriesData2_5.push(0)\r\n }\r\n })\r\n var copyLineSeriesData5 = [...lineSeriesData1_5, ...lineSeriesData2_5]\r\n var copyBarSeriesData5 = [...barSeriesData5]\r\n copyLineSeriesData5.sort((a, b) => a - b)\r\n copyBarSeriesData5.sort((a, b) => a.value - b.value)\r\n var barMax5 = copyBarSeriesData5.length > 0 ? copyBarSeriesData5[copyBarSeriesData5.length - 1].value : 50\r\n var lineMin5 = copyLineSeriesData5[0] ? copyLineSeriesData5[0] : 0\r\n var lineMax5 = copyLineSeriesData5.length > 0 ? copyLineSeriesData5[copyLineSeriesData5.length - 1] : 0\r\n if (lineMin5 == 0 && lineMin5 == lineMax5) {\r\n lineMin5 = -5\r\n lineMax5 = 1\r\n } else {\r\n var tempLineMin5 = lineMin5\r\n lineMin5 = lineMin5 - 2.5 * (lineMax5 - lineMin5)\r\n lineMax5 = lineMax5 + 0.5 * (lineMax5 - tempLineMin5)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas5\')\r\n var option = deepClone(barOption1)\r\n option.xAxis.data = categoryData5\r\n option.yAxis[0].max = barMax5 * 2\r\n option.yAxis[1].min = lineMin5\r\n option.yAxis[1].max = lineMax5\r\n option.series[0].data = barSeriesData5\r\n option.series[1].data = lineSeriesData1_5\r\n option.series[2].data = lineSeriesData2_5\r\n myChart.setOption(option)\r\n }\r\n\r\n // 省外访问省内${ipTag}服务 TOP 10 省内地区响应流量分布(Region Out2in Received Traffic Bytes Top 10)\r\n function initEcharts11 () {\r\n var categoryData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => checkXAxisIsEmpty(t.client_admin_area))\r\n var barSeriesData11 = regionIn2idcReceivedTrafficBytesTop10.map(t => {\r\n if (!t.bytes_received) {\r\n t.bytes_received = 0\r\n }\r\n return {\r\n value: t.bytes_received,\r\n percent: xxxServiceIn2idctraffictotal.bytes_received === 0 ? 0 : parseFloat(t.bytes_received) / xxxServiceIn2idctraffictotal.bytes_received\r\n }\r\n })\r\n // 第一条线\r\n var lineSeriesData1_11 = []\r\n // 第二条线\r\n var lineSeriesData2_11 = []\r\n regionIn2idcReceivedTrafficBytesTop10.forEach(t => {\r\n var findData = pre1stRegionIn2idcReceivedTrafficBytesTop10.find(pt => pt.client_admin_area === t.client_admin_area)\r\n if (findData && findData.bytes_received) {\r\n lineSeriesData1_11.push(findData.bytes_received === 0 ? 0 : parseFloat(((t.bytes_received - findData.bytes_received) / parseFloat(findData.bytes_received) * 100).toFixed(2)))\r\n var findData2 = pre2ndRegionIn2idcReceivedTrafficBytesTop10.find(ppt => findData.client_admin_area === ppt.client_admin_area)\r\n if (findData2 && findData2.bytes_received) {\r\n lineSeriesData2_11.push(findData2.bytes_received === 0 ? 0 : parseFloat(((findData.bytes_received - findData2.bytes_received) / parseFloat(findData2.bytes_received) * 100).toFixed(2)))\r\n } else {\r\n lineSeriesData2_11.push(0)\r\n }\r\n } else {\r\n lineSeriesData1_11.push(0)\r\n lineSeriesData2_11.push(0)\r\n }\r\n })\r\n var copyLineSeriesData11 = [...lineSeriesData1_11, ...lineSeriesData2_11]\r\n var copyBarSeriesData11 = [...barSeriesData11]\r\n copyLineSeriesData11.sort((a, b) => a - b)\r\n copyBarSeriesData11.sort((a, b) => a.value - b.value)\r\n var barMax11 = copyBarSeriesData11.length > 0 ? copyBarSeriesData11[copyBarSeriesData11.length - 1].value : 50\r\n var lineMin11 = copyLineSeriesData11[0] ? copyLineSeriesData11[0] : 0\r\n var lineMax11 = copyLineSeriesData11.length > 0 ? copyLineSeriesData11[copyLineSeriesData11.length - 1] : 0\r\n if (lineMin11 == 0 && lineMin11 == lineMax11) {\r\n lineMin11 = -5\r\n lineMax11 = 1\r\n } else {\r\n var tempLineMin11 = lineMin11\r\n lineMin11 = lineMin11 - 2.5 * (lineMax11 - lineMin11)\r\n lineMax11 = lineMax11 + 0.5 * (lineMax11 - tempLineMin11)\r\n }\r\n\r\n var myChart = initEchartsInstance(\'canvas11\')\r\n var option = deepClone(barOption2)\r\n option.xAxis.data = categoryData11\r\n option.yAxis[0].max = barMax11 * 2\r\n option.yAxis[1].min = lineMin11\r\n option.yAxis[1].max = lineMax11\r\n option.series[0].data = barSeriesData11\r\n option.series[1].data = lineSeriesData1_11\r\n option.series[2].data = lineSeriesData2_11\r\n myChart.setOption(option)\r\n }\r\n\r\n\r\n var pieOption = {\r\n legend: {\r\n show: false\r\n },\r\n title: {\r\n show: true,\r\n bottom: 0,\r\n left: \'center\',\r\n textStyle: {\r\n fontSize: 14\r\n }\r\n },\r\n color: chartColor,\r\n animation: false,\r\n series: [\r\n {\r\n type: \'pie\',\r\n radius: [35, 60],\r\n label: {\r\n formatter: \'{b} {d}%\',\r\n fontSize: 12,\r\n },\r\n center: [\'50%\', 145],\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: \'white\'\r\n }\r\n }\r\n ]\r\n }\r\n\r\n function initEcharts13 () {\r\n var total13 = Top10RelatedAppBytesAsServer.find(b => b.app_company === \'total\')\r\n if (total13) {\r\n var pieAppData13 = []\r\n var businessDistributionAppData13 = Top10RelatedAppBytesAsServer.filter(t => t.app_company !== \'total\')\r\n var bytesAll = 0\r\n pieAppData13 = businessDistributionAppData13.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total13.bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieAppData13.push({ name: \'other\', value: (total13.bytes - bytesAll) / total13.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas13\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieAppData13\r\n myChart.setOption(option)\r\n }\r\n function initEcharts18 () {\r\n var total18 = Top10RelatedDomainBytesAsServer.find(b => b.domain === \'total\')\r\n if (total18) {\r\n var pieDomainData18 = []\r\n var businessDistributionDomainData18 = Top10RelatedDomainBytesAsServer.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData18 = businessDistributionDomainData18.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total18.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData18.push({ name: \'other\', value: (total18.bytes - bytesAll) / total18.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas18\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData18\r\n myChart.setOption(option)\r\n }\r\n function initEcharts14 () {\r\n var total14 = Top10RelatedAppBytesAsClient.find(b => b.app_company === \'total\')\r\n if (total14) {\r\n var pieAppData14 = []\r\n var businessDistributionAppData14 = Top10RelatedAppBytesAsClient.filter(t => t.app_company !== \'total\')\r\n var bytesAll = 0\r\n pieAppData14 = businessDistributionAppData14.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total14.bytes,\r\n name: t.app_company || \'null\'\r\n }\r\n })\r\n pieAppData14.push({ name: \'other\', value: (total14.bytes - bytesAll) / total14.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas14\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieAppData14\r\n myChart.setOption(option)\r\n }\r\n function initEcharts19 () {\r\n var total19 = Top10RelatedDomainBytesAsClient.find(b => b.domain === \'total\')\r\n if (total19) {\r\n var pieDomainData19 = []\r\n var businessDistributionDomainData19 = Top10RelatedDomainBytesAsClient.filter(t => t.domain !== \'total\')\r\n var bytesAll = 0\r\n pieDomainData19 = businessDistributionDomainData19.map(t => {\r\n bytesAll += t.bytes\r\n return {\r\n value: t.bytes === 0 ? 0 : t.bytes / total19.bytes,\r\n name: t.domain || \'null\'\r\n }\r\n })\r\n pieDomainData19.push({ name: \'other\', value: (total19.bytes - bytesAll) / total19.bytes })\r\n }\r\n var myChart = initEchartsInstance(\'canvas19\')\r\n var option = deepClone(pieOption)\r\n option.series[0].data = pieDomainData19\r\n myChart.setOption(option)\r\n }\r\n\r\n var sankeyOption = {\r\n animation: false,\r\n series: [\r\n {\r\n type: \'sankey\',\r\n layout: \'none\',\r\n emphasis: {\r\n disabled: true\r\n },\r\n lineStyle: {\r\n color: \'gradient\',\r\n curveness: 0.5\r\n }\r\n }\r\n ]\r\n }\r\n var barOption = {\r\n animation: false,\r\n color: [chartColor[12], chartColor[6], chartColor[1]],\r\n grid: {\r\n top: 30,\r\n bottom: 35,\r\n right: 20,\r\n left: 70\r\n },\r\n xAxis: {\r\n type: \'category\',\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 20,\r\n fontSize: 12\r\n }\r\n },\r\n yAxis: {\r\n type: \'value\',\r\n axisLabel: {\r\n formatter (value) {\r\n return unitConvert(value, unitTypes.percent).join(\'\')\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n },\r\n {\r\n type: \'bar\',\r\n barWidth: 10,\r\n barMinHeight: 2\r\n }\r\n ]\r\n }\r\n\r\n try { initEcharts1() } catch (e) { console.error(e) }\r\n try { initEcharts2() } catch (e) { console.error(e) }\r\n try { initEcharts3() } catch (e) { console.error(e) }\r\n try { initEcharts4() } catch (e) { console.error(e) }\r\n try { initEcharts5() } catch (e) { console.error(e) }\r\n try { initEcharts8() } catch (e) { console.error(e) }\r\n try { initEcharts9() } catch (e) { console.error(e) }\r\n try { initEcharts10() } catch (e) { console.error(e) }\r\n try { initEcharts11() } catch (e) { console.error(e) }\r\n try { initEcharts13() } catch (e) { console.error(e) }\r\n try { initEcharts18() } catch (e) { console.error(e) }\r\n try { initEcharts14() } catch (e) { console.error(e) }\r\n try { initEcharts19() } catch (e) { console.error(e) }\r\n try { initTimeRange() } catch (e) { console.error(e) }\r\n</script>\r\n</body>\r\n\r\n</html>\r\n', '{\r\n \"isRepeat\": 1,\r\n \"isScheduler\":1,\r\n \"queryParam\":[{\r\n \"key\":\"ipTag\",\r\n \"value\":\"\",\r\n \"i18n\":\"report.ipTag\",\r\n \"labelType\": \"input\"\r\n }],\r\n \"cronExpression\":\"0 0 17 * * ? *\",\r\n \"startTime\": \"\",\r\n \"endTime\": \"\",\r\n \"timeConfig\": {\r\n \"type\": \"yesterday\",\r\n \"offset\": 0,\r\n \"unit\": \"\"\r\n },\r\n \"dataset\": [\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime}\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"trafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company as app_company, SUM(sent_bytes + received_bytes) as bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY bytes DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppBytes\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceOut2inTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2outTrafficTotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre1stxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Pre2ndxxxServiceIdc2intraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(sent_bytes) AS bytes_sent, SUM(received_bytes) AS bytes_received, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\'))\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceIn2idctraffictotal\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate), 4), 0) AS rate_avg, IFNULL(ROUND(max(rate), 4), 0) AS rate_max, IFNULL(ROUND(min(rate), 4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT IFNULL(ROUND(QUANTILE(rate, 0.5), 4), 0) AS rate50, IFNULL(ROUND(QUANTILE(rate, 0.9), 4), 0) AS rate90, IFNULL(ROUND(QUANTILE(rate, 0.99), 4), 0) AS rate99, IFNULL(ROUND(AVG(rate),4), 0) AS rate_avg, IFNULL(ROUND(max(rate),4), 0) AS rate_max, IFNULL(ROUND(min(rate),4), 0) AS rate_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, (bytes * 8) / 300 AS rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndxxxServiceRate\"\r\n },\r\n {\r\n \"querySql\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(recv_time),\'PT5M\',\'zero\') AS stat_time, SUM(sent_bytes + received_bytes) AS bytes, ROUND(bytes * 8/300) AS rate FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceTrafficChangingCurve\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(establish_latency,0.5), 4), 0) AS establish_latency_p50, IFNULL(ROUND(QUANTILE(establish_latency,0.9), 4), 0) AS establish_latency_p90, IFNULL(ROUND(QUANTILE(establish_latency,0.99), 4), 0) AS establish_latency_p99, IFNULL(ROUND(AVG(establish_latency), 4), 0) AS establish_latency_avg, IFNULL(ROUND(MAX(establish_latency), 4), 0) AS establish_latency_max, IFNULL(ROUND(MIN(establish_latency), 4), 0) AS establish_latency_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inTcp\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT SUM(bytes) AS all_bytes, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.5), 4), 0) as pkt_retrans_percent_p50, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.9), 4), 0) as pkt_retrans_percent_p90, IFNULL(ROUND(QUANTILE(pkt_retrans_percent,0.99), 4), 0) as pkt_retrans_percent_p99, IFNULL(ROUND(AVG(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_avg, IFNULL(ROUND(max(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_max, IFNULL(ROUND(min(pkt_retrans_percent), 4), 0) as pkt_retrans_percent_min FROM ( SELECT SUM(sent_bytes + received_bytes) AS bytes, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND (has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\')) GROUP BY granularity)\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxServiceOut2inPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(establish_latency,0.5), 4) AS establish_latency_p50, ROUND(QUANTILE(establish_latency,0.9), 4) AS establish_latency_p90, ROUND(QUANTILE(establish_latency,0.99), 4) AS establish_latency_p99, ROUND(AVG(establish_latency), 4) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppTCP\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(establish_latency,0.5), 4) AS establish_latency_p50, ROUND(QUANTILE(establish_latency,0.9), 4) AS establish_latency_p90, ROUND(QUANTILE(establish_latency,0.99), 4) AS establish_latency_p99, ROUND(AVG(establish_latency), 4) AS establish_latency_avg, ROUND(MAX(establish_latency), 4) AS establish_latency_max, ROUND(MIN(establish_latency), 4) AS establish_latency_min FROM ( SELECT app_company, ROUND(AVG(tcp_rtt_ms)) AS establish_latency, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxIPTagsTop10AppTCP\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(pkt_retrans_percent,0.5), 4) as pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent,0.9), 4) as pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent,0.99), 4) as pkt_retrans_percent_p99, ROUND(AVG(pkt_retrans_percent), 4) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND ip_protocol IN (\'tcp\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"xxxIPTagsTop10AppPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, ROUND(QUANTILE(pkt_retrans_percent,0.5), 4) as pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent,0.9), 4) as pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent,0.99), 4) as pkt_retrans_percent_p99, ROUND(AVG(pkt_retrans_percent), 4) as pkt_retrans_percent_avg, ROUND(max(pkt_retrans_percent), 4) as pkt_retrans_percent_max, ROUND(min(pkt_retrans_percent), 4) as pkt_retrans_percent_min FROM ( SELECT app_company, ROUND(SUM(tcp_c2s_rtx_pkts + tcp_s2c_rtx_pkts)/ SUM(sent_pkts + received_pkts),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(recv_time),INTERVAL 300 SECOND)) as granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND ip_protocol IN (\'tcp\') AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) AND app_company IN ( SELECT app_company FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND ((has(client_ip_tags,\'${ipTag}\') or has(server_ip_tags,\'${ipTag}\'))) GROUP BY app_company ORDER BY SUM(sent_bytes + received_bytes) DESC LIMIT 10) GROUP BY granularity, app_company) GROUP BY app_company LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stxxxIPTagsTop10AppPacketRetrans\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedAppBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedDomainBytesAsServer\"\r\n },\r\n {\r\n \"querySql\":\"SELECT app_company AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS app_company, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(app_company) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY app_company ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedAppBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT domain AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC limit 10 UNION ALL SELECT \'total\' AS domain, SUM(sent_bytes + received_bytes) AS bytes FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(domain) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY domain ORDER BY bytes DESC\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"Top10RelatedDomainBytesAsClient\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time <${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time <${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_super_admin_area AS client_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_super_admin_area AS client_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_super_admin_area in ( SELECT client_super_admin_area AS client_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(client_super_admin_area) AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_super_admin_area) GROUP BY client_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceOut2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"provinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_super_admin_area AS server_super_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_super_admin_area AS server_super_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_super_admin_area in ( SELECT server_super_admin_area AS server_super_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND notEmpty(server_super_admin_area) AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_super_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_super_admin_area) GROUP BY server_super_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndProvinceIn2outReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT client_admin_area AS client_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT client_admin_area AS client_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(server_ip_tags,\'${ipTag}\')) AND client_admin_area in ( SELECT client_admin_area AS client_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND client_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(server_ip_tags,\'${ipTag}\')) GROUP BY client_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, client_admin_area) GROUP BY client_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIn2idcReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_sent) AS bytes_sent, IFNULL(ROUND(AVG(sent_rate), 4), 0) AS sent_rate_avg, IFNULL(ROUND(MAX(sent_rate), 4), 0) AS sent_rate_max, IFNULL(ROUND(MIN(sent_rate), 4), 0) AS sent_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(sent_bytes) AS bytes_sent, (bytes_sent * 8) / (300) AS sent_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(sent_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_sent DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inSentTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"regionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - ${timeDiff} AND recv_time < ${endTime} - ${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre1stRegionIdc2inReceivedTrafficBytesTop10\"\r\n },\r\n {\r\n \"querySql\":\"SELECT server_admin_area AS server_admin_area, SUM(bytes_received) AS bytes_received, IFNULL(ROUND(AVG(received_rate), 4), 0) AS received_rate_avg, IFNULL(ROUND(MAX(received_rate), 4), 0) AS received_rate_max, IFNULL(ROUND(MIN(received_rate), 4), 0) AS received_rate_min FROM ( SELECT server_admin_area AS server_admin_area, SUM(received_bytes) AS bytes_received, (bytes_received * 8) / (300) AS received_rate, toDateTime(toStartOfInterval(toDateTime(recv_time), INTERVAL 5 MINUTE)) AS granularity FROM session_record_cn WHERE recv_time >= ${startTime} - 2*${timeDiff} AND recv_time < ${endTime} - 2*${timeDiff} AND (has(client_ip_tags,\'${ipTag}\')) AND server_admin_area in ( SELECT server_admin_area AS server_admin_area FROM session_record_cn WHERE recv_time >= ${startTime} AND recv_time < ${endTime} AND server_admin_area IN (\'IDC\', \'IPTV\', \'VBAS测试\', \'阿克苏\', \'阿勒泰\', \'巴州\', \'博州\', \'昌吉\', \'哈密\', \'和田\', \'喀什\', \'克拉玛依\', \'克州\', \'奎屯\', \'区公司\', \'石河子\',\'塔城\', \'吐鲁番\', \'乌鲁木齐\', \'伊犁\', \'移动互联网\', \'移动网\',\'预留\') AND (has(client_ip_tags,\'${ipTag}\')) GROUP BY server_admin_area ORDER BY SUM(received_bytes) DESC LIMIT 10 ) GROUP BY granularity, server_admin_area) GROUP BY server_admin_area ORDER BY bytes_received DESC LIMIT 10\",\r\n \"type\":\"table\",\r\n \"valueAlias\":\"pre2ndRegionIdc2inReceivedTrafficBytesTop10\"\r\n }\r\n ]\r\n}', 1, '2023-03-08 17:58:55', 1, '2023-03-08 17:58:59', NULL); SET FOREIGN_KEY_CHECKS = 1; |
