icon ${title}

[<- Back to DPR Home](/data_processing) | [ DPR v2.1.0 Release Notes](/dpr_updates_2_1_0) ### Release 2.2.0 1. Profile datasets distinguished by fields - often multiple types of data is combined in a single dataset (ex. single family and apartment units in a real estate dataset), by specifying the distinguishing fields (ex. real estate type), you get profiles that are specific to each value of that field. This creates a better profile as in our example, home sales price averages will be similar for items in that same grouping. 2. Able to use previous records when calculating fields and to return a list of values at the end as follows: ``` if (Region == null) { // end case def result = []; // convert the regional sales map into a list of items with region & sales for (def regionName : ctxt.RegionalSales.keySet()) result.add([region: regionName, sales: ctxt.RegionalSales.get(regionName)]); return result } else { // while we still have data if (ctxt.RegionalSales == null) ctxt.RegionalSales = [:]; // create a map if (ctxt.RegionalSales[Region] == null) ctxt.RegionalSales[Region] = 0; // if this is first time to see region ctxt.RegionalSales[Region] += MonthlySales // add sales based on the region they were reported for return null // nothing to return since we want to go through all records } ``` 3. Able to specify list of fields to include/exclude in the joinData module as an array, vs. just a CSV 4. Saving configuration file changes via the UI creates a backup in the data folder of the project working directory (ex. data/dpr-config-v2.yml) and saves the updated config to the normal file (ex. dpr-config.yml). Previously it used to save the latest as dpr-config-v2.yml. 5. Ability to see the data as a result of each step 6. See the reference documentation for each step in the Design panel