Adding additional KPIs, adding required documentation
[ric-app/mc.git] / mc-core / mc / queries / throughput.gsql
1 DEFINE{query_name 'throughput_ue';
2         max_lfta_disorder '1'; max_hfta_disorder '1';
3 }
4 PARAM{ window uint; }
5 select ($window*(TB+1))/1000 as TS, e_RAB_ID, UE_ID, GNB_ID,
6        $window/1000.0 as measurementInterval,
7
8                 (sum(usageCountDL)) / UMAX( sum(
9                         UINT(((endTimeStamp & HEX'FF000000') >> 24) | ((endTimeStamp & HEX'00FF0000') >> 8) | ((endTimeStamp & HEX'0000FF00') << 8) | ((endTimeStamp & HEX'000000FF') << 24)) -
10                         UINT(((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24)) 
11                   ), 1)  as active_throughput,
12
13                 (sum(usageCountDL)) / UMAX( 
14                         max( UINT(((endTimeStamp & HEX'FF000000') >> 24) | ((endTimeStamp & HEX'00FF0000') >> 8) | ((endTimeStamp & HEX'0000FF00') << 8) | ((endTimeStamp & HEX'000000FF') << 24)) ) -
15             min( UINT(((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24)) 
16                   ), $window) as average_throughput,
17
18                 min((usageCountDL) / UMAX( 
19                         UINT(((endTimeStamp & HEX'FF000000') >> 24) | ((endTimeStamp & HEX'00FF0000') >> 8) | ((endTimeStamp & HEX'0000FF00') << 8) | ((endTimeStamp & HEX'000000FF') << 24)) -
20                         UINT(((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24)) 
21                   , 1) ) as min_throughput,
22
23                 max((usageCountDL) / UMAX( 
24                         UINT(((endTimeStamp & HEX'FF000000') >> 24) | ((endTimeStamp & HEX'00FF0000') >> 8) | ((endTimeStamp & HEX'0000FF00') << 8) | ((endTimeStamp & HEX'000000FF') << 24)) -
25                         UINT(((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24)) 
26                   , 1) ) as max_throughput
27
28 from RATDATAUSAGE.rat_data_usage
29 where schemaId=1501
30 group by e_RAB_ID, id_SgNB_UE_X2AP_ID as UE_ID, gnb_id as GNB_ID, timestamp_ms/$window as TB
31 ;
32
33 //      transform to switch byte order
34 // (((endTimeStamp & HEX'FF000000') >> 24) | ((endTimeStamp & HEX'00FF0000') >> 8) | ((endTimeStamp & HEX'0000FF00') << 8) | ((endTimeStamp & HEX'000000FF') << 24))
35 // (((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24))
36
37
38 DEFINE{query_name 'throughput_rollup';
39         max_lfta_disorder '1'; max_hfta_disorder '1';
40 }
41 PARAM{ window uint; }
42 select TS, e_RAB_ID, GNB_ID,
43        $window/1000.0 as measurementInterval,
44         count(*) as count_ues,
45         quantile_of( UINT(average_throughput), .05) as average_throughput_percentile_05,
46         quantile_of( UINT(average_throughput), .50) as average_throughput_percentile_50,
47         avg( average_throughput) as average_average_throughput,
48         quantile_of( UINT(average_throughput), .95) as average_throughput_percentile_95,
49         quantile_of( UINT(active_throughput), .05) as active_throughput_percentile_05,
50         quantile_of( UINT(active_throughput), .50) as active_throughput_percentile_50,
51         avg( active_throughput) as average_active_throughput,
52         quantile_of( UINT(active_throughput), .95) as active_throughput_percentile_95
53 from throughput_ue
54 group by TS, e_RAB_ID, GNB_ID
55 ;
56
57 DEFINE{query_name 'throughput_gnb';
58         max_lfta_disorder '1'; max_hfta_disorder '1';
59 }
60 PARAM{ window uint; }
61 select ($window*(TB+1))/1000 as TS, e_RAB_ID, GNB_ID,
62        $window/1000.0 as measurementInterval,
63
64                 (sum(usageCountDL)) / UMAX( sum(
65                         UINT(((endTimeStamp & HEX'FF000000') >> 24) | ((endTimeStamp & HEX'00FF0000') >> 8) | ((endTimeStamp & HEX'0000FF00') << 8) | ((endTimeStamp & HEX'000000FF') << 24)) -
66                         UINT(((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24)) 
67                   ), 1)  as active_throughput,
68
69                 (sum(usageCountDL)) / UMAX( 
70                         max( UINT(((endTimeStamp & HEX'FF000000') >> 24) | ((endTimeStamp & HEX'00FF0000') >> 8) | ((endTimeStamp & HEX'0000FF00') << 8) | ((endTimeStamp & HEX'000000FF') << 24)) ) -
71             min( UINT(((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24)) 
72                   ), $window) as average_throughput,
73
74                 min((usageCountDL) / UMAX( 
75                         UINT(((endTimeStamp & HEX'FF000000') >> 24) | ((endTimeStamp & HEX'00FF0000') >> 8) | ((endTimeStamp & HEX'0000FF00') << 8) | ((endTimeStamp & HEX'000000FF') << 24)) -
76                         UINT(((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24)) 
77                   , 1) ) as min_throughput,
78
79                 max((usageCountDL) / UMAX( 
80                         UINT(((endTimeStamp & HEX'FF000000') >> 24) | ((endTimeStamp & HEX'00FF0000') >> 8) | ((endTimeStamp & HEX'0000FF00') << 8) | ((endTimeStamp & HEX'000000FF') << 24)) -
81                         UINT(((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24)) 
82                   , 1) ) as max_throughput,
83
84                 quantile_of( UINT( (usageCountDL) / UMAX( 
85                         UINT(((endTimeStamp & HEX'FF000000') >> 24) | ((endTimeStamp & HEX'00FF0000') >> 8) | ((endTimeStamp & HEX'0000FF00') << 8) | ((endTimeStamp & HEX'000000FF') << 24)) -
86                         UINT(((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24)) 
87                   , 1) ), .05),
88
89                 quantile_of( UINT( (usageCountDL) / UMAX( 
90                         UINT(((endTimeStamp & HEX'FF000000') >> 24) | ((endTimeStamp & HEX'00FF0000') >> 8) | ((endTimeStamp & HEX'0000FF00') << 8) | ((endTimeStamp & HEX'000000FF') << 24)) -
91                         UINT(((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24)) 
92                   , 1) ), .95)
93
94 from RATDATAUSAGE.rat_data_usage
95 where schemaId=1501
96 group by e_RAB_ID, gnb_id as GNB_ID, timestamp_ms/$window as TB
97
98
99