KPI Workbench and Custom SQL Queries Training
KPI Workbench and Custom SQL Queries Training
NEVER SETTLE FOR ANYTHING LESS THAN EXCELLENCE. NEMO NETWORK TESTING SOLUTIONS
3rd party
query tool
Nemo Analyze
(visualisation in
map, graph, etc)
Nemo Analyze
(visualisation in
map, graph, etc)
KPI workbench
ODBC interface
(SQL queries)
SQL query
KPI workbench
SQL pros
Efficient for power users
Standard language
Scalability of the queries is good
Excellent tool for grouping and filtering of data
SQL cons
Requires SQL and database schema knowledge
Temporal relations between tables are difficult or impossible to build
Difficult or impossible to track sequence of events, and do other more advanced logic
KPI workbench pros
Graphical UI, no need for SQL knowledge
Possibility to create temporal correlations between tables
Possibility to create state machines, and other advanced sequences
KPI workbench cons
Currently data can be correlated only per file, e.g. MMS end to end delivery time cannot be
calculated from two separate files
Scalabilty is not as good as with SQL, may run into Japa heap space error with large datasets
Use SQL if you need to add complex filter or formatting for one of the exsiting queries in the parameter
tree
Use KPI workbench if you cannot do what you want with SQL
KPI Workbench
NEVER SETTLE FOR ANYTHING LESS THAN EXCELLENCE. NEMO NETWORK TESTING SOLUTIONS
General
Easier to use: no need for SQL knowledge, or Nemo Analyze database schema
Many advanced queries are not possible to do with SQL: tracking certaing signaling message
sequences, call drop root cause analysis, etc.
Predefined parameters
Custom SQL queries
Existing custom KPIs
The underlying data recording principle of all Nemo measurement tools is that the data is
written to the log file only when values change, i.e. values are not written periodically.
More precisely, if any of the information elements of a given event change, the event is
written to the log file.
Correlations
Previous, Current, and Next Value
Correlations
All Values Within Time Range
Useful when combining non-event type data (RSCP, RxLevel, Tx power, etc) to
one table
Correlations
All Values Within Time Range
Example correlation
A1
Table A
(input)
B1
B2
Table A+B
(output)
A1+B1
B3
A1+B2
A2+B2
A2+B3
B4
A2+B4
A2
A3
B5
A4
A2
A3
A3+B5
A4+B5
A5
B6
Table B
(input)
A6
A5+B5
A5+B6
A6+B6
B7
time
Output is not written from B7 because
Table A (leftmost input) does not have valid
row at the time of B7
Correlations
Union
Example correlation
Table A+B
A1
Table A
A1
Table B
A2
B1
A3
A2
B2
A3
B3
A4
A5
B4
B5
A4
A5
Union
A6
B1
A6
B6
B2
B7
B3
B4
= A row in the table
B5
B6
B7
Aggregate Functions
Column: selected the column from the input dataset to which the
aggregate will be calculated
Weight by: Each sample can be weighted (multiplied) by other
column of input data. Typical usage is to weight average by time or
by distance
Group by: Data can be grouped, e.g. Avg RSCP per scrambling code
State Machine
Idle
Call attempt
Call failure
Call
dropped
Call connected
Connecting call
Alerting
GROUP BY Node
Example correlation
Call session
(Master input)
B1
Call 1
BLER
(input)
Output
Call1+B1
B2
Call1+B2
B3
Call1+B3
B4
Call1+B4
Call1
Call 2
B5
B6
time
Output is not written from BLER 7 because
Call session does not have valid row at the
time of BLER 7 (that is, the call was ended
before)
Call2+B5
Call2+B6
Time shift node can be used to modify the timestamp and the time range of any input data.
One of the most relevant use cases of this node is when one wants to automatically capture details
before and/or after a particular event for custom root cause analysis purposes
Picture below illustrates capturing of RF details 4s before and after each dropped call using time shift
node
Resample node
SQL Queries
NEVER SETTLE FOR ANYTHING LESS THAN EXCELLENCE. NEMO NETWORK TESTING SOLUTIONS
To get started:
Nemo Analyze database schema (Describes the table structure of the database)
Nemo File format specification (Describes the events in Nemo measurement fileformat)
Open access SQL reference (Describes the supported SQL syntax)
Nemo Analyze user manual (Describes the special, Nemo-specific SQL scalar functions and stored
procedures supported by the Nemo Analyze SQL driver)
The solution is optimized for fast and convenient use as a standalone tool:
No high system requirements standalone Analyze runs in a standard PC
Queries over single measurement file are always fast regardless of the amount of files in the
database
Maintenance free, no DB administrator needed
Tables
Measurement
oid
title
...
Device
oid
the_measurement
device_extension
Event
oid
time
gps_latitude
gps_longitude
the_device
...
the_event
...
All event tables
the_event
...
+ Views
BLER
BLER+
Right way to do it
/* MEAS({measurement_file_name_1}:{file_extension}|
{measurement_file_name_2}:{file_extension}|....) */
Right way to do it
Value Enumeration
Connections 1/2
Connections 2/2
Examples:
1. Get only those throughput samples that were
recorded during data transfer:
2.
Connection types:
0="Unknown"
1="Voice"
2="Handover"
3="Attach"
4="PDP contect
activation"
5="Data"
6="RRC"
7="Data transfer"
8="MMS"
9="SMS"
10="POC"
11="LAU"
12="RAU"
13="Ping"
1.
2.
Most tables do not have any relation between each other, but you may still want to join data between such tables
Two type of JOINs can be made based on time:
Sample based correlation
Each row of table x and a row from table y WHERE the timestamp of x row is within time range of the y row
E.g. Tx power vs. RSCP scatter
Time range condition
- Each row of table x WHERE the timestamp is in certain range, defined by some other tables.
E.g. Tx power samples between Attach request and Attach Accept L3 messages.
3.
4.
When y table is the first one in FROM clause, the comparison is vice versa
Comparison is not bi-directional! It there is a big difference in the sample periods of x and y, the one that has smaller sample
period, should be selected as y in order to get highest possible resolution
Make x.the_device = y.the_device condition to WHERE clause (this limits the time correlation within each measurement file, improves the
performance)
Add /* OPTIONS(USE_TIME_SCOPE) */ hint at the end of the sql query. This enables the time scope join.
For example: Get Tx power vs. RSCP, when RSCP < -95 dBm
Tx power is in Nemo.UMTS.TXPC table, RSCP is in Nemo.UMTS.ECNO.Cell table, no relation between the tables
All Tx power samples are taken and checked if they fall to the validity time interval of an RSCP sample that is < -95
Binary timestamp (time) can (and should) be returned in the SELECT row, UI converts it automatically
to readable timestamp
Binary timestamp MUST be used if query is wanted to see correctly in line and bar graph
This is because the validity time interval of the samples is needed also to plot correct graphs
Measurement file filter HINT must not be used in the query, unless it is wanted to be statically limited
to certain measurement file(s) UI filters the query results in runtime
VALUE_ENUM scalar is not needed, UI uses it automatically
Results have to be ordered by time (ORDER BY sql_time) in order to see results correct in graphs and
map
Step-by-step procedure:
www.anite.com/nemo