Split Summary Values of Groups into the Detail Rows
Problem description
The Excel file book1.xlsx stores the water consumption of each year and month, and some of the data is shown in the figure below:
In addition, the annual water leakage summary table leakage.xlsx is shown in the figure below:
We need to allocate the annual water leakage to the Water leakage column of each year and month according to the ratio of the monthly water consumption in each year to the total water consumption of the year.
Write SPL script:
A |
|
1 |
=T("E:/work/book1.xlsx") |
2 |
=T("E:/work/leakage.xlsx") |
3 |
=A1.group(Year) |
4 |
=A3.run(a=A2.select@1(Year==A3.Year).'Water leakage',s=~.sum(Water),~.run('Water leakage'=Water*a/s)) |
5 |
=T("E:/work/book2.xlsx",A1) |
A1 Read the data of book1.xlsx
A2 Read the data of leakage.xlsx
A3 Group A1 data by Year
A4 Loop through each group in A3, variable a is the water leakage of the corresponding year selected from A2, variable s is the total water consumption of the current year, and then loop through all the records in the current year, and assign the value “Water*a/s” to the Water leakage column.
A5 Store A1 to book2.xlsx
SPL Official Website 👉 https://www.scudata.com
SPL Feedback and Help 👉 https://www.reddit.com/r/esProc_Desktop/
SPL Learning Material 👉 https://c.scudata.com
Discord 👉 https://discord.gg/cFTcUNs7
Youtube 👉 https://www.youtube.com/@esProcDesktop
Linkedin Group 👉 https://www.linkedin.com/groups/14419406/