Changes for page 6. Flexible Reports Guide

Last modified by Iaroslav Platonov on 2026/06/08 15:20

From version 6.1
edited by Lana
on 2025/12/10 22:48
Change comment: Uploaded new attachment "Screenshot 2025-12-10 at 19.48.44.png", version {1}
To version 4.1
edited by Lana
on 2025/12/10 22:43
Change comment: Uploaded new attachment "Screenshot 2025-12-10 at 19.43.28.png", version {1}

Summary

Details

Page properties
Content
... ... @@ -34,7 +34,8 @@
34 34  
35 35  The template can contain multiple sheets, Excel formulas, charts, conditional formatting, and a summary report. An example of the generated sheet of an .xlsx file is shown in Figure 2.1.
36 36  
37 -== 2.2. Timestamps ==
37 +1.
38 +11. Timestamps
38 38  
39 39  Timestamps can be specified in the query language. They are designed to transmit information about the date and time associated with the report.  There are four types of timestamps:
40 40  
... ... @@ -48,137 +48,9 @@
48 48  
49 49  Each timestamp should be placed in a separate cell.
50 50  
51 -== 2.3. Query format ==
52 +1.
53 +11. Query format
52 52  
53 -The query is divided into 4 parts/groups separated by the ":" symbol.
55 +The query is divided into 4 parts/groups separated with the ":" symbol.
54 54  
55 -For reports for a day, month, and year, the query is built as described in Figure 2.2.
56 -
57 -[[image:Screenshot 2025-12-10 at 19.43.28.png]]
58 -
59 -Fig.2.2 – Query example
60 -
61 -For example, the query **y-m-d:h10-m00:el-dev-30-ea_imp-3m:sum** consists of the following parts. The last part, "sum," in the example above, is optional.
62 -
63 -1) **y-m-d:** means that the year, month, and day values from the date** **associated with the report will be inserted into the query (specified when creating the template via the web-interface). Only part of the date associated with the report can be used. For example, **y2024-m-d **means that the month and day should be substituted, while the year (2024) remains fixed as specified in the request. **y2024-m2-d **means that only the day should be substituted with the year set to 2024 and the month set to 2 (February).
64 -
65 -It is also possible to omit **d (y-m:)**, or omit **m** and **d (y:)**, this means that we are interested in the entire interval (if only the year is specified, then the entire annual interval, if the year and month are specified, then the monthly interval).
66 -
67 -The **d** can also be omitted (**y-m:**), or both **m** and **d** can be omitted (**y:**). This means the entire interval is considered, if only the year is specified, the entire annual interval is used, and if the year and month are specified, the monthly interval is used.
68 -
69 -**h10-m00** means that the values for the specified hour and minute will be inserted into the query. By omitting seconds, CENTO understands that the entire minute interval is of interest. This means the sample will be from 10:00 to 10:01 (excluding data for 10:01:00, effectively from 10:00:00 to 10:00:59). To make a sample for an hour, write **h10** omitting minutes and seconds. The time does not need to be specified at all, for example, if the interest is in the data for the day. However, to ensure the query is correct, write “*” in place of the time, like this: ~*~*y-m-d::el-dev-30-ea_imp-3m:sum~*~*.
70 -
71 -The first two parts of the query can be replaced with another, more convenient formula with **#date**, which will be described below.
72 -
73 -2) The entry** el-dev-30-ea_imp-3m **has the following parts:
74 -
75 -* **el** (electricity) is electrical data. Data on other measurements (heat, pressure, emissions, etc.) are requested with the entry **en** (energy);
76 -* **dev-30** (device) is accessing a device with an id 30 for which data needs to be downloaded;
77 -
78 -Instead of **dev**, **bg** (billing group) can be used to request data for a billing group, for example, **y-m-d:h10:el-bg-22-30m:sum**
79 -
80 -* **ea_imp** is the channel of the device from which the information is taken. The following channels can be used for electricity:
81 -
82 -* ea_imp - energy A+
83 -* ea_exp - energy A-
84 -* er_imp - energy R+
85 -* er_exp - energy R-
86 -* pa_imp - power A+
87 -* pa_exp - power of A-
88 -* pr_imp - power R+
89 -* pr_exp - power R-
90 -* ra_imp - readings of A+
91 -* ra_exp - readings of A-
92 -* rr_imp - readings of R+
93 -* rr_exp - readings of R-
94 -
95 -The specified channels can be renamed to their decryptions in the config.toml configuration file of the sed_channels service.
96 -
97 -When referring to **energy** measurements instead of **electrical**, the channels are encoded with numbers. For example, it would be recorded as **en-dev-30-15-3m**, which represents 3-minute data for the channel with id = 15 in the device with id = 30.
98 -
99 -Possible interval options include: **1m** for minute data, **3m** for 3-minute data, **15m** for 15-minute data, **20m** for 20-minute data, **30m** for 30-minute data, **1h** for hourly data, **1d** for daily data, **1m** for monthly data, as well as other intervals that the device may return.
100 -
101 -**sum** is an aggregating function that, in this case, calculates the sum. In addition to **sum**, other functions may include **min** for minimum, **max** for maximum, and **mean** for average.
102 -
103 -The aggregating function may be followed by an optional parameter, the coefficient, written as a k number, where the number is the coefficient value, for example, k0.1 (i.e. **sum-k0.1**): the result of query execution will be multiplied by it.
104 -
105 -The data request form for flexible period reports is similar to reports for a day, month, or year. However, in the date block at the beginning of the query, instead of a specific date (**y-m-d**), the start and end of the report period are used as **#begin-#end**. For example, the query **#begin-#end:h10-m00:el-dev-30-ea_imp-3m:sum** means that the total active energy value (reception) is requested for the user-defined period from 10:00 a.m. at the beginning of the period (**#begin**) to 10:00 a.m. at the end of the period (**#end**) from a device with ID 30.
106 -
107 -Queries for flexible reports for a period can be generated, indicating only the beginning of the period (**#begin**) or only the end (**#end**). In this case, CENTO will fill the cell with the value only for the specified time, ignoring the formula at the end of the query (if there is one).
108 -
109 -Flexible period reports also allow time offsets in queries, but **only by day**. For example, **#end+2d** or **#begin-1d**.
110 -
111 -The formulas described above can be replaced with formulas with **#date**. Using formulas with **#date** to expand the query toolkit. The comparison of queries is performed in Table 2.3. Additional queries are described in lines 13 - 16 in the specified table.
112 -
113 -Table 2.3. Comparative table of y-m-d and #date formulas
114 -
115 -|**№**|(% style="width:161px" %)**Format with y-m-d**|(% style="width:134px" %)**Format with #date**|(% style="width:198px" %)**Description**|(% style="width:106px" %)**Type of report in which the formula is applied**
116 -|1|(% style="width:161px" %)y-m-d3:*:el-dev-201-ea_imp-30m:sum|(% style="width:134px" %)#date-d3:d:dev-201-ea_imp:sum|(% style="width:198px" %)Sum of all half-hours on the 3rd day of the month|(% style="width:106px" %)monthly, daily
117 -|2|(% style="width:161px" %)y-m-d1:h00-m30:el-dev-201-ea_imp-30m:sum|(% style="width:134px" %)#date-d1-h00-m30:*:dev-201-ea_imp|(% style="width:198px" %)Value of the half-hour is 00-30 on the first day|(% style="width:106px" %)monthly, daily
118 -|3|(% style="width:161px" %)y-m-d+1:h00-m30:el-dev-201-ea_imp-30m|(% style="width:134px" %)#date+1-h00-m30:*:dev-201-ea_imp|(% style="width:198px" %)Value of the half-hour is 00-30 of the day following the selected one|(% style="width:106px" %)daytime
119 -|4|(% style="width:161px" %)y-m-d+10:h00-m30:el-bg-42-30m|(% style="width:134px" %)#date+10-h00-m30:*:bg-42|(% style="width:198px" %)Value of the half-hour is 00-30 per day +10; checking the operation of the electro-billing group|(% style="width:106px" %)daytime
120 -|5|(% style="width:161px" %)y-m-d-1:h00-m30:el-dev-201-ea_imp-30m|(% style="width:134px" %)#date-1-h00-m30:*:dev-201-ea_imp|(% style="width:198px" %)Value of the 00-30 half-hour per day is -1|(% style="width:106px" %)daytime
121 -|6|(% style="width:161px" %)y-m-d1-1:h01-m00:el-dev-201-ea_imp-30m|(% style="width:134px" %)#date-d1-1-h01-m00:*:dev-201-ea_imp|(% style="width:198px" %)Value of the 01-00 half-hour for the last day of the previous month|(% style="width:106px" %)monthly, daily
122 -|7|(% style="width:161px" %)y-m-d1-2:h00-m30:el-dev-201-ea_imp-30m|(% style="width:134px" %)#date-d1-2-h00-m30:*:dev-201-ea_imp|(% style="width:198px" %)Value of the half-hour is 00-30 for the penultimate day of the previous month|(% style="width:106px" %)monthly, daily
123 -|8|(% style="width:161px" %)y-m-d:*:el-dev-201-ea_imp-30m:sum|(% style="width:134px" %)#date:d:dev-201-ea_imp:sum|(% style="width:198px" %)Sum of all half-hours for the selected day|(% style="width:106px" %)daytime
124 -|9|(% style="width:161px" %)y-m:*:el-dev-201-ea_imp-30m:sum|(% style="width:134px" %)#date:m:dev-201-ea_imp:sum|(% style="width:198px" %)Sum of all half-hours for the selected month|(% style="width:106px" %)annual, monthly, daily
125 -|10|(% style="width:161px" %)y:*:el-dev-201-ea_imp-30m:max|(% style="width:134px" %)#date:y:dev-201-ea_imp:max|(% style="width:198px" %)The maximum half-hour for a selected year|(% style="width:106px" %)annual, monthly, daily
126 -|11|(% style="width:161px" %)y-m-1m:*:el-dev-201-ea_imp-30m:min|(% style="width:134px" %)#date-1m:m:dev-201-ea_imp:min|(% style="width:198px" %)Minimum half-hour for the previous month|(% style="width:106px" %)annual, monthly
127 -|12|(% style="width:161px" %)y-m1:*:en-dev-220-1021-1h:mean|(% style="width:134px" %)#date-m2:m:ch-1021-1h:mean|(% style="width:198px" %)Output the average of all hours from channel 1021 at device 220 for February of the year selected by the user|(% style="width:106px" %)annual, monthly, daily
128 -| |(% style="width:161px" %) |(% style="width:134px" %)**New functions available only with #date**|(% style="width:198px" %) |(% style="width:106px" %)
129 -|13|(% style="width:161px" %) |(% style="width:134px" %)#date-h08-#date-h17:*:dev-201-ea_imp:sum|(% style="width:198px" %)Sum of energy as of the report date from 8 a.m. to 5 p.m.|(% style="width:106px" %)daytime
130 -|14|(% style="width:161px" %) |(% style="width:134px" %)#date+1-h08-#date+1-h17:*:dev-201-ea_imp:sum|(% style="width:198px" %)Sum of energy for the day following the reporting day from 8 a.m. to 5 p.m.|(% style="width:106px" %)daytime
131 -|15|(% style="width:161px" %) |(% style="width:134px" %)#date-d1-h08-#date+1-h17:*:dev-201-ea_imp:sum|(% style="width:198px" %)Sum of energy from the first day of the month at 8 a.m. to the day following the reporting day at 5 p.m.|(% style="width:106px" %)daytime
132 -|16|(% style="width:161px" %) |(% style="width:134px" %)#date-d1-1-h08-#date+1-h17:*:dev-201-ea_imp:sum|(% style="width:198px" %)Sum of energy from the last day of the previous month, 8 a. m. to the day following the reporting one, up to 5 p.m.|(% style="width:106px" %)daytime
133 -
134 -== 2.4. Query examples ==
135 -
136 -**y2019-m-d:h10:el-dev-30-ea_imp-3m:sum-k0.001**
137 -
138 -The is data for 2019, the month and day values from the date associated with the report, the time from 10:00 a.m. to 11:00 a.m., data from the electricity table (el) for three minutes (3m), data on the device with id = 30, for the ea_imp channel, apply the sum aggregating function with the coefficient 0.001 (result is in megawatts).
139 -
140 -**y-m1:*:en-dev-220-1021-1d:sum**
141 -
142 -The data is for the 1st month of the year from the date associated with the report. The data is taken from the energy resources table for daily records for device 220 and channel 1021. The day is skipped here, so there will be a selection based on the range of all days from the 1st to the 2nd month. If, for example, the year is 2019, then the range is: from 2019-01-01 to 2019-02-01 excluding the 1st day of the 2nd month.
143 -
144 -**y-m+1-d1:h00-m00:el-dev-1202-ra_imp-30m**
145 -
146 -The data is for 00:00 on the 1st of the month following the date associated with the report. This request outputs electricity readings for a device with id = 1202. You can also write **m+2**, **m+3, y+5**, etc.
147 -
148 -**y-m-d1-1:h10-m00:el-dev-1202-ra_imp-30m**
149 -
150 -The data is for10:00 a.m. on the last day of the previous month of the device with Id 1202, the ra_imp channel from the database of 30 minutes.
151 -
152 -**#begin-#end:h00-m00:el-dev-46-ea_imp-3m:sum**
153 -
154 -The data is for the period from 00:00 of the date **#begin **to 00:00 of the date **#end**. The data is downloaded using the active received energy from the device with ID 46. The value is given as the sum of the three-minute values of the specified interval.
155 -
156 -**#begin:h06-m30:el-dev-58-ea_exp-30m**
157 -
158 -The data of the half-hour starting at 6:30 a.m., the date indicated at the beginning of the requested period. The data is on the output of active energy from a device with ID 58.
159 -
160 -**#end+2d:h02-m00:el-bg-22-30m**
161 -
162 -The data of the half-hour starting at 2:00 a.m., the date running 2 days after the end of the period requested by the user. The data is requested for the billing group with ID 22 according to the readings of the received active energy.
163 -
164 -== 2.5. Output of information on devices to the report. Device codes and tags. ==
165 -
166 -The request **#dev.201.IP** displays the IP address of the device with id = 201201 from the configuration in the report. Instead of the device ID, the device code can be specified.
167 -
168 -**#dev.201.Name** displays the device name with id = 201201 from the configuration in the report. Instead of the device ID, the device code can be specified.
169 -
170 -**#dev.201.VendorNumber** displays the serial number of the device with id = 201 from the configuration in the report. Instead of the device ID, the device code can be specified.
171 -
172 -The serial number of the device can also be taken from the tag if the device can output its number according to any protocol. For example, the SATEC device can be queried via Modbus, and the serial number can be retrieved from the **ti11001** tag. To display this tag in the report, write the formula **y-m-d:*:ti11001 **where **ti11001** can be replaced with the tag code. In the same way, add any tags from the configuration to flexible reports.
173 -
174 -In query formulas, device IDs can be replaced with device codes. Unlike the id, the code can contain Latin letters, which allows it to encode a lot of useful information. For example, the code P22S1Y8 may mean that the device collects data on PS22 in the first bus section in cell 8. To write the code in the request, add the channel to it, for example, Energy A+, which is encrypted as **ea_imp** by default.
175 -
176 -Thus, the formula **y-m-d1:*:el-dev-201-ea_imp-30m:sum** can be replaced by the formula **y-m-d1:*:E123457ea_imp:sum**. A similar logic applies to all the formulas described above.
177 -
178 -3. MANAGING REPORT TEMPLATES
179 -
180 -Flexible reports are managed in the Flexible Reports window accessible using the **Reports menu: Reports -> Flexible Reports**.
181 -
182 -A template generated in accordance with the query language specified in Section 1 is uploaded to the Flexible Reports page (see Figure 3.1) by clicking the (Create Template) button [[image:Screenshot 2025-12-10 at 19.48.07.png||height="27" width="29"]] in the upper-right corner of the template list.
183 -
184 184  
Screenshot 2025-12-10 at 19.48.07.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Lana
Size
... ... @@ -1,1 +1,0 @@
1 -2.5 KB
Content
Screenshot 2025-12-10 at 19.48.44.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Lana
Size
... ... @@ -1,1 +1,0 @@
1 -128.9 KB
Content