Commit Graph

19 Commits

Author SHA1 Message Date
Sumaiya Javed 567504d8fd MDL-77412 reportbuilder: Make groupconcat aggregation method sortable. 2023-02-28 10:39:00 +13:00
Paul Holden 650b6caf83 MDL-77201 reportbuilder: pass current aggregation to column callbacks. 2023-02-14 11:03:03 +00:00
Jun Pataleta 9bdfcc46d3 Merge branch 'MDL-75358-master' of https://github.com/marinaglancy/moodle 2022-10-31 10:10:16 +08:00
Víctor Déniz 587deee8f5 Merge branch 'MDL-72722' of https://github.com/paulholden/moodle 2022-10-18 00:26:24 +01:00
Paul Holden fb0401f36b MDL-75811 reportbuilder: concatenate using list seperator lang config. 2022-09-26 11:07:00 +01:00
Paul Holden 9a24440386 MDL-72722 reportbuilder: Oracle support for distinct group concat.
Requirements for Oracle were increased to 19c for Moodle 4.1 - now
with support for DISTINCT keyword within the LISTAGG function:

https://livesql.oracle.com/apex/livesql/file/content_HT1O85E4BHSBWN93G1B3M8SI2.html
2022-09-26 11:03:33 +01:00
Marina Glancy 4bb042c352 MDL-75358 reportbuilder: display nulls as empty cells in aggregation 2022-09-20 18:18:41 +02:00
Paul Holden 4b8f076560 MDL-75191 reportbuilder: use column callbacks in avg/sum aggregation.
When aggregating a column using either method, for numeric types we
should execute column callbacks to ensure consistent formatting.
2022-08-18 17:04:33 +01:00
Paul Holden 85544709d0 MDL-74656 reportbuilder: cast fields to char on mssql during concat. 2022-07-27 08:12:34 +01:00
Paul Holden 5582bc2ded MDL-74656 reportbuilder: ensure nulls preserved in column callbacks.
When concatenating column fields in order to perform aggregation on
them (e.g. group concatenation), we need to preserve all null values
in the data passed to each column callback.

Co-authored-by: Carlos Castillo <carlos.castillo@moodle.com>
2022-07-19 08:23:54 +01:00
Paul Holden f9b4611156 MDL-72184 reportbuilder: make use of new methods moved to drivers. 2022-06-12 19:31:34 +01:00
Paul Holden ea45aefe62 MDL-74675 reportbuilder: preserve column type during aggregation.
When applying callbacks during the group concatenation aggregation
types, ensure the column type is preserved for it's default value.
2022-05-19 16:04:37 +01:00
Paul Holden b95a655a33 MDL-73941 reportbuilder: return localised floats when aggregating.
As the 'average' and 'percentage' aggregation types both return
float values, we should ensure they are output with localised
formatting (e.g. decimal separator).
2022-02-20 07:43:32 +00:00
Paul Holden eb2e261df4 MDL-73706 reportbuilder: fix count for columns with multiple fields.
When using the "Count distinct" aggregation type on a column that
selects multiple fields, we should account for each of them in the
returned SQL.

Move helper method to facilitate this to the base aggregation class
so it can be re-used between all types.
2022-01-28 15:38:40 +00:00
Paul Holden f4bf4dca36 MDL-73112 reportbuilder: improve handling of concatenated columns.
This change overcomes limitations in certain DB engines (such as
MySQL[1]) which can lead to truncation of data when applying group
concatenation to columns.

Ensure we account for that by validating that we are able to extract
the expected number of fields from each concatenated value.

[1] https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_group_concat_max_len
2021-11-22 09:14:41 +00:00
Paul Holden 8f27f246a5 MDL-72960 reportbuilder: unique delimeters between concat'd fields.
Use delimeters that are less likely to conflict with genuine row
content, for both column fields and field values, in the group
concatenation aggregation methods.
2021-11-01 08:03:59 +00:00
Paul Holden 5ec86bf501 MDL-72663 reportbuilder: improvements to column aggregation methods.
The group concatenation types now consistently sort the returned values
and support aggregating columns containing multiple fields and those
with defined callbacks.
2021-10-22 16:17:31 +01:00
Paul Holden 16a65f73e7 MDL-72663 reportbuilder: column API changes to improve aggregation.
Refinements to how columns can be defined in relation to available
aggregation methods:

* Disable aggregation types;
* Set column GROUP BY during aggregation;
* Defer column sorting to that of the aggregation method
2021-10-22 16:17:17 +01:00
Paul Holden f47e89a9bd MDL-70795 reportbuilder: editor elements to set column aggregation.
Aggregation of report columns allows the report editor to perform
common types of data aggregation (concatenation, sum, count, etc)
on given columns.
2021-10-19 13:56:05 +01:00