Introduction
Counting values is very useful for generating statistics within your models and there is functionality within PhixFlow to help you achieve this.
Simple Count
We can generate counts of particular attributes using a View. This means we do not need to edit the source data only how is is displayed.
Example
We have a set of company details and we want to see how many times a company name appears in the list.
Solution
- Open the properties of the table holding the company data.
- Create a new view, this will be used to display our count:
- Set the Name e.g. Company Counter.
- Set the Display Type to
Grid
. - Sort Order and Filters are optional for our example. See View for more details on setting these.
- In View Attributes click Show or Hide Attributes
- From the popup box that appears, drag in the name of the company into the View Attributes section:
- Double click this View Attribute to open its properties.
- Change the Name to
Count
or something useful.- Note: It must be changed as we will be adding the name again later for display purposes and we cannot have two attributes with the same name.
- Set Aggregate Function to
Count
. - Save all your changes.
- We are now counting, this will produce a count based on all the attributes in the view. Currently it will simply count how many names there are, and we want to know how many of each name their are.
- Change the Name to
- Now add the name of the company to the view. This will now provide a count for each name.
- Save all your changes
- In the table right-click the view we just created and select View Chart. A view of the data will display a count of all the company names.
There are other useful Aggregate Functions available that we can use to generate different metrics in our views, see View Attribute for more details on these.
Bespoke Counts
Where we need to generate more complex counts such as the total sum of invoices by year, we need to create additional attributes to hold the information that will be aggregated on.
Example
If we have invoice information:
From this information we would like to generate the sum of all invoices by year.
Solution
- Create a new attribute on the table containing the Invoice information.
- Name the attribute
Year
. - Set Type to
Integer
. - Set the expression to:
- dateGet(_out.InvoiceDate, _YEAR)
- This statement will extract a year from a date attribute, see dateGet.
- Save your changes.
- Name the attribute
- Rerun Analysis on your Table and the new attribute will be populated.
- Create a new View on your table
- Set Name to
Invoice by Year
or something suitable. - Set Display Type to
Grid
. - You may wish to set a Sort Order by year, this is optional.
- In View Attributes click Show or Hide Attributes
- Add the attribute that contains the invoice amount and the new Year attribute.
- Double click the amount attribute to open its properties and set the Aggregate Function to
Sum
. - This will sum all the amounts by year.
- Double click the amount attribute to open its properties and set the Aggregate Function to
- Save your changes.
- Set Name to
- In the Table right-click the view we just created and select View Chart.
It can often be useful to add a new integer attribute with the value 1 to all records, this facilitates the ability to quickly get sum totals based on other fields. For example the number of invoices by year or number of people with the surname "Smith".
More Information
For more information on presenting counts and stats see Understanding Data Views.