Count

Counts the number of records, rows or times where a condition is true.

Parameters

NameDefaultMeaning
nameThe name of the value to be written to the frame
whereA Substitutable condition - the count increases by 1 for every row that matches the rule.
whenA Substitutable condition - the count increases by 1 for every the the rule becomes 'true'
changesinThe name of a table column - the count increases by 1 for every time the value changes
ignoringValues to ignore when 'changesin' is specified
upSearches a table column for increases in value
downSearches a table column for decreases in value
originWhen the value reverses direction in up and down counting, this specifies the value to return to
splitbyThe column value to split the resulting data by

Description

This function performs a count, either of…

1) The number of rows that match a condition,
2) The number of times a condition became true,
3) The number of times a value changes, or
3) The total amount that a value either increases or decreases

To count each individual row, use the where parameter. This will count each row individually - if we where each value is yes in the table below…

Row #Value
1Yes
2No
3Yes
4Yes
5Yes
6No

…the answer will be 4, since there are four rows where the value is 'yes'.

Alternatively if we used when instead of where, the answer would be '2', because the value only changed to 'Yes' twice.

Example

If the frame contains the following attributes…

Row #Value
1Yes
2No
3Yes
4Yes
5Yes
6No
{
   "type": "count",
   "when": "{Value}='Yes'",
   "name": "Yesses"
}

The final results will include a “Yesses” attribute with a value of 2.

ChangesIn

To count the number of changes, use changesin.

If certain values - such as '0' - should be ignored, add them in the ignores option, which is an array of values that should not be counted.

For example, if you had a 'Batch ID' number…

{
   "type": "count",
   "changesin": "Schedule Job ID'",
   "ignored": [0],
   "name": "Batches"
}

Counting Up/Down

You can also count based on an existing total - for example, a counter that records the number of items produced this batch/shift/order.

{
   "type": "count",
   "up": "Conveyor 1.Total Items'",
   "name": "Total Produced"
}

If you specify an origin value, the monitored value is expected to return sharply to this value as part of normal operation.

{
   "type": "count",
   "up": "Conveyor 1.Total Items'",
   "reset": "hard",
   "name": "Total Produced"
}

The difference is in how the system deals with when a value goes from high-to-low. In a 'hard' reset mode, the system expects that the counter will drop back to zero in all cases - it will not go backwards for any other reason.

Splitting

Splitting effects up, down and changesin types of count.

You can split the results by a given value. For instance, if you wanted to find out what the most popular style of product was for a given day, you could split the production count by the product type.

{
   "type": "count",
   "up": "Conveyor 1.Total Items'",
   "name": "Total Produced",
   "splitby": "Product.Type"
}

This will output several different 'Total Produced' figures - one for each product type.

If Product Type is an discrete value in ARDI rather than text, the system will substitute the English name for the value. For example, rather than 'Product Type 4', it will be 'Product Type 1500CC Motor'.

This ensures that your analytics remain stable and don't require maintenance when new product lines are added in the future.