/* SPDX-FileCopyrightText: 2017 Volker Krause SPDX-License-Identifier: MIT */ /*! \page user-feedback-telemetry.html \previouspage UserFeedback Manual \nextpage Surveys \title Telemetry \section1 Overview Telemetry for a product consists of a set of data sources. Each data source can be a scalar, list or map, and consists of one or more elements. \section1 Data Model A data source represents a logically grouped and indivisible set of telemetry data of the application. If you are familiar with JSON, it might be useful to see the data model as JSON structures with a depth limit of two. \section2 Source Type A data source has one of the following types: \list \li Scalar. A scalar source transmits a single sample of its elements. A typical example would be a OS type/version source. \li List. A list source transmits a sequence of its elements. The size of that sequence is not pre-defined and can be empty. A typical example would be the users screen configuration. \li Map. A map source transmits a set of its elements keyed by a string identifier. Map keys are not pre-defined but can contain arbitrary values. A typical example would be the usage ratios of different views of the application. \endlist The type of a data source is static and defined in the product schema. \section2 Elements Each data source has one or more elements. Elements are named fields that contain values of basic data types, and are fixed and pre-defined in the product schema. The following data types are supported for source elements: \list \li Boolean \li Integer \li Float \li String \endlist \section1 Aggregations Aggregations of telemetry data have no impact on users, they purely serve analytics. Aggregations use one or more data source elements as input. The following aggregations are currently implemented: \list \li Category. The category aggregator counts the amount of samples grouped by the value of the selected data source element. It can be used on any element which contains a reasonably small set of discrete values. A typical example would be the OS type. \li Numeric. The numeric aggregator computes the minimum/maximum and median values of the selected data source element. It can be used on any element which contains numeric values. A typical example would be the start count or usage time of the application. \li RatioSet. The ratio set aggregator shows the distribution of a map data source containing normalized numeric data. This is typically used for the usage ratio of different views or features in the application. \endlist */