Before grouping, rows can be filtered. That is, objects of grouping are filtered rows.
In order to implement sorting and statistic with database system, data are converted as temporary database table automatically before grouping.
Sorting condition and maximum data number of each group can be set for grouped data.
With grouped data, following can be handled:
Add grouping information in source data, which are 2 new columns: Group Number and Group Parameter.
Split data into multiple files of groups.
Calculate descriptive statistic of groups.
Display following types of charts in sequence of groups dynamically: XY chart, pie chart, comparison bars chart, self comparison bars chart, box-and-whisker chart.
MyBox supports six ways to group data:
Way | Parameters | complete | Non-intersect |
---|---|---|---|
Equal values | Several column names | Yes | Yes |
Value Ranges | Column name + Size of split | Yes | Yes |
Column name + Number of split | Yes | Yes | |
Column name + List of “start-end” | Possible | Possible | |
Time values | Column of date/time + Time unit | Yes | Yes |
Expression | Row expression | Yes | Yes |
Conditions | Several row filters | Possible | Possible |
Row numbers | Size of split | Yes | Yes |
Number of split | Yes | Yes | |
List of “Start-end” | Possible | Possible |
Following are their descriptions.
Select several columns and put rows into same group when they have same values of these columns.
Convert data as a temporary database table
Read each row and group them by equal values of selected columns. The results like executing SQL of “group by”.
Complete: Each row belongs to a group.
Non-intersect: Each row only belongs to one group.
Select one column and divide data by value ranges of this column.
Following 3 selections can be for the split:
Interval of values
Number of split
List of “StartValue-EndValue”
When split rows of date/era:
Values of the column are converted as milliseconds.
Time unit can be set.
For items of “Start-End”, ranges should be in valid formats of date/era.
Add/Delete/Update start-end items in table.
Set whether includes “start”/“end” for “start-end” items.
Convert data as a temporary database table.
Ignore type of selected column, and parse its values as double.
Calcuate maximu value and minimum value of this column.
Count ranges of each group.
Compose query statements for each group. The conditions are like “column-name >= start-value-of-range AND column-name < end-value-of-range”.
If split as size or number, then:
Complete: Each row belongs to a group.
Non-intersect: Each row only belongs to one group.
If split as start-end list, then:
Possible incomplete: Some rows may not belong to any group.
Possible intersect: Some rows may belongs to several groups.
Only when data include date/time columns, this way can be taken:
Select a column of date/time type.
Select time unit: century/year/month/day/hour/minute/second.
Examples:
When time unit is “century”, data are calculated to get century values and grouped by them.
When time unit is “month”, data are divided as same groups when they have same values of year and month.
When time unit is “hour”, data are divided as same groups when they have same values of year, month, day, and hour.
When time unit is “second”, data are divided as same groups when they have same values of year, month, day, hour, minute, and second.
Convert data as a temporary database table.
As time unit, save values are in same groups.
Complete: Each row belongs to a group.
Non-intersect: Each row only belongs to one group.
Define a row expresion, and rows are in same groups when they have same values of this expression.
Examples:
Expression “new Date(‘#{StartTime}’).getDay()”, group as the week values of column “StartTime”.
Expression “#{description}’.charAt(2)”, group as the 2th character of column “description”.
Expression “‘#{StartTime}’.substring(0, 7)”, group as the first 7 characters of column “StartTime”.
Convert data as a temporary database table.
Calculate the expression against each row, save values are in same groups.
Complete: Each row belongs to a group.
Non-intersect: Each row only belongs to one group.
Define some row filters and data rows are divided in groups by these row filters.
Convert data as a temporary database table.
For each row filter, scan data rows to pick out group members which satisfy condition.
Possible incomplete: Some rows may not belong to any group.
Possible intersect: Some rows may belongs to several groups.
Divide data rows by their row numbers. Following 3 selections can be for the split:
Size of split(interval of row numbers)
Number of split
List of “StartNumber-EndNumber”
Convert data as a temporary database table.
Count range of row numbers for each group.
Scan data rows, and set groups as row numbers.
If split as size or number, then:
Complete: Each row belongs to a group.
Non-intersect: Each row only belongs to one group.
If split as start-end list, then:
Possible incomplete: Some rows may not belong to any group.
Possible intersect: Some rows may belongs to several groups.