An indicator drill allows you to further analyse an indicator. Indicator drill consists of an array of blocks. These blocks can be displayed either after clicking on an indicator, or directly on a dashboard.
...
Code Block | ||
---|---|---|
| ||
{ "name": "customers_indicator_drill", "type": "indicatorDrill", "content": { "blocks": [ { "type": "distribution", "itemId": "8ac314a472a91c42bfbeac9cf90a30aa" }, { "type": "ranking", "itemId": "e802510371745be32fcd1bfa92cb5604" }, { "type": "timeSeries", "itemId": "2134bead33528991273f6ae3b76b2acd" }, { "type": "categories", "title": "Customers by channel", "description": "Customers by channel", "splitProperty": "baskets.on_off_name", "orderBy": { "property": "baskets.on_off_name", "direction": "desc" }, "itemId": "b1049a5fac09e793928340811686e326" }, { "type": "categories", "title": "Customers by age and sex", "description": "Customers by age and sex categories", "splitProperty": "clients.age_name", "orderBy": { "property": "clients.age_cat", "direction": "asc" }, "dualProperty": "clients.sex_name", "label": "Age categories", "itemId": "0c20c60783f36e3596b026f38f9a1304" } ] } } |
Code Block | ||||
---|---|---|---|---|
| ||||
{ "url": "/rest/projects/yufqzxkbiecj7jot/md/indicatorDrills/t45dd93ksm4jshrs", "dumpTime": "2018-01-31T17:39:08Z", "version": "4", "content": { "id": "t45dd93ksm4jshrs", "name": "customers_indicator_drill", "type": "indicatorDrill", "content": { "blocks": [ { "type": "distribution", "itemId": "74fe1a6b0d620af9108bfaf5ea910512" }, { "type": "ranking", "itemId": "e063e0ce6509bf5754719ef264d0059a" }, { "type": "timeSeries", "itemId": "c4bc02a4d19a25e79dfe66e79a5f18ed" }, { "type": "categories", "title": "Customers by channel", "description": "Customers by channel", "splitProperty": "baskets.on_off_name", "orderBy": { "property": "baskets.on_off_name", "direction": "desc" }, "itemId": "ce46b043522d8b4650c6cb2d1caf12e0" }, { "type": "categories", "title": "Customers by age and sex", "description": "Customers by age and sex categories", "splitProperty": "clients.age_name", "orderBy": { "property": "clients.age_cat", "direction": "asc", "sort": "asc" }, "dualProperty": "clients.sex_name", "label": "Age categories", "itemId": "e770eb18f888d7f7e99ee113b9d5c6a0" } ] }, "accessInfo": { "createdAt": "2017-10-05T08:27:04Z", "modifiedAt": "2018-01-31T16:39:10Z" }, "links": [ { "rel": "self", "href": "/rest/projects/yufqzxkbiecj7jot/md/indicatorDrills/t45dd93ksm4jshrs" } ] } } |
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "name": "turnover_value_indicator_drill", "type": "indicatorDrill", "content": { "blocks": [ { "type": "distribution", "onDashboard": true, "itemId": "d74864cc583e1181f289f071bd75a635" }, { "type": "ranking", "itemId": "d8c7644858a40fb7ac90d15d685cffe1" }, { "type": "timeSeries", "itemId": "8d053723cb9372574ceeae9bd0c360ba" } ] } } |
It is possible to display any block directly on a dashboard by setting the onDashboard
property to true
(see examples below). The block will be accessible and controllable without having to drill down on the indicator.
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "name": "offline_turnover_indicator_drill", "type": "indicatorDrill", "content": { "blocks": [ { "type": "timeSeries", "additionalSeries": [ { "indicator": "/rest/projects/$projectId/md/indicators?name=online_turnover_indicator" } ], "annotations": [ { "dataset": "/rest/projects/$projectId/md/datasets?name=events" } ], "itemId": "95d3557834d051bc932882e8b7e4a7b0" } ] } } |
It is possible to extend the timeSeries
block with additional time series. In this example, we are comparing the offline and offline turnover, as you can see in the additionalSeries
array, which contains a link to the online_turnover_indicator
object.
...
Distribution also has a description, which is not configurable through metadata, but is compiled from the properties of its paired indicator
, according to this formula: "Distribution of indicator.title
in granularity
"
Key | Type | Optionality | Description | Constraints | ||||||
---|---|---|---|---|---|---|---|---|---|---|
type | string |
| type identifier, always | [ | ||||||
onDashboard | boolean |
| determines if the block should be displayed directly on a dashboard | [ | ||||||
collapsed | boolean |
| determines if the block should be collapsed when entering the view |
| ||||||
itemId | string |
| Generated ID for this item to be used for matching it within a parent array while rebasing share objects. For more details see content.**.itemId section. | [a-z0-9]{32} |
content.blocks.ranking
...
content.blocks.ranking
Ranking block can be switched to display either markers, or areas (when they're both available in the view). When there is a higher number of elements, infinite scroll is used.
Ranking also has a description, which is not configurable through metadata, but is compiled from the properties of its paired indicator
, according to this formula: "Rank of object
according to indicator.title
" (note: object
in this case is either a polygon from a certain granularity, or a marker).
Key | Type | Optionality | Description | Constraints | ||||||
---|---|---|---|---|---|---|---|---|---|---|
type | string |
| type identifier, always | [ranking] | ||||||
onDashboard | boolean |
| determines if the block should be displayed directly on a dashboard | [ | ||||||
featureType | string |
| specifies which feature type should be ranked by default default = | [granularity, markers] | ||||||
direction | string |
| specifies the direction of ranked objects default = | [ | ||||||
collapsed | boolean |
| determines if the block should be collapsed when entering the view |
| ||||||
itemId | string |
| Generated ID for this item to be used for matching it within a parent array while rebasing share objects. For more details see content.**.itemId section. | [a-z0-9]{32} |
content.blocks.timeSeries
...
content.blocks.timeSeries
Time series visualises the progress and trend of the respective indicator in a selected time frame. Additionally, it can be extended with time series of another indicator.
...
Time series also has a description, which is not configurable through metadata, but is compiled from the properties of its paired indicator
, according to this formula: "Progress of indicator.title
from view.content.filterGroup.globalDate.startDate
to view.content.filterGroup.globalDate.endDate
"
Key | Type | Optionality | Description | Constraints | ||||||
---|---|---|---|---|---|---|---|---|---|---|
type | string |
| type identifier, always | [ | ||||||
onDashboard | boolean |
| determines if the block should be displayed directly on a dashboard | [ | ||||||
defaultPeriod | string |
| specifies the default period dataset selected by default | /rest/projects/$projectId/md/datasets?name={datasetName} | ||||||
additionalSeries | array |
| array of additionalSeries objects | |||||||
annotations | array |
| array of annotations objects | |||||||
collapsed | boolean |
| determines if the block should be collapsed when entering the view |
| ||||||
itemId | string |
| Generated ID for this item to be used for matching it within a parent array while rebasing share objects. For more details see content.**.itemId section. | [a-z0-9]{32} |
content.blocks.timeSeries.additionalSeries
...
content.blocks.timeSeries.additionalSeries
Contains link to an additional time series indicator. See the syntax example above.
...
Key | Type | Optionality | Description | Constraints | ||||||
---|---|---|---|---|---|---|---|---|---|---|
type | string |
| type identifier, always | [ | ||||||
title | string |
| human-readable title of the categories block | (*) | ||||||
description | string |
| description of the categories block | (*) | ||||||
splitProperty | string |
| identifier of a dataset property, by which the classes of data will be split | {datasetName}.{datasetProperty} | ||||||
indicator | string |
| URL link to the indicator object in case the block should not drill its paired indicator from the dashboard | /rest/projects/$projectId/md/indicators?name={indicatorName} | ||||||
onDashboard | boolean |
| determines if the block should be displayed directly on a dashboard | [ | ||||||
collapsed | boolean |
| determines if the block should be collapsed when entering the view | [true, false] | ||||||
visualized | boolean |
| determines if the block should be visualized when entering the view (= if qualitative visualization should be enabled, more here) | [true, false] | ||||||
filterable | boolean |
| flag that allows you to turn off the default filterability if not present, the block is filterable, must be set to | [true, false] | ||||||
hideNullItems | boolean |
| determines if the block should display categories with null or zero values default = | [true, false] | ||||||
sizeLimit | integer |
| limit the size of displayed categories | x => 1 | ||||||
orderBy | object |
| specifies ordering of the properties in the block if | |||||||
| array |
| specify values of categories which will be displayed by default (when entering the view) | |||||||
vertical | boolean |
| determines if the block should be vertical doesn't work with | [true, false] | ||||||
condensed | boolean |
| determines if the block should appear as condensed or not see visual representation below | [true, false] | ||||||
dualProperty | string |
| identifier of a dataset property, by which the data will be dually split block with | {datasetName}.{datasetProperty} | ||||||
label | string |
| determines the default label of condensed categories it is not possible to set the | (*) | ||||||
itemId | string |
| Generated ID for this item to be used for matching it within a parent array while rebasing share objects. For more details see content.**.itemId section. | [a-z0-9]{32} |
content.**.itemId
Generated ID for this item to be used for matching it within a parent array while rebasing share objects. itemId is genrated as hash from random UUID when given item is being created - either an entire dashboard is being created or an item is being added to MD object content via update. Once itemId is generated it is not supposed to be modified.
IMPORTANT: When interacting with REST API do not provide own generated values as itemId;
...
Visual representation
Distribution block
...